一、类

1、类是模子,确定对象将会拥有的特征(属性)和行为(方法)

2、类的特点:

(1)、类是对象的类型

(2)、具有相同属性和方法的一组对象的集合

3、类是抽象的概念,仅仅是模板,比如说:“手机”,对象是一个你能够看的到、摸得着的具体实体

二、定义类

1、类的重要性:所有java程序都以类class为组织单元

2、定义类的步骤:
(1)定义类名 (2)编写类的属性  (3)编写类的方法

  public class 类名{

    //定义属性部分(成员变量)

    属性1的类型 属性1;

    属性2的类型 属性2;

    ....

    方法1;

    方法2;

    ....

  }

三、对象

1、使用对象的步骤

(1)创建对象

类名 对象名 = new 类名();

Telphone phone = new Telphone();

(2)使用对象

引用对象的属性:对象名.属性

phone.screen = 5;

引用对象的方法:对象名.方法名()

phone.sendMessage();

四、成员变量和局部变量

1、成员变量

在类中定义,用来描述对象将要有什么

2、局部变量

在类的方法中定义,在方法中临时保存数据

区别:
(1)局部变量的作用域仅限于定义它的方法

(2)成员变量的作用域在整个类内部都是可见的

(3)初始值不同

  java会给成员变量一个初始值

  java不会给局部变量赋初始值

(4)在同一个方法中,不允许有同名局部变量,在不同的方法中,可以有同名局部变量

(5)两类变量同名时,局部变量具有更高的优先级

五、构造方法

1、使用new+构造方法 创建一个新的对象

2、构造方法是定义在Java类中的一个用来初始化对象的方法,构造方法与类同名并且没有返回值

3、无参数的构造方法

4、有参数的构造方法

5、当没有指定构造方法时,系统会自动添加无参的构造方法

6、当有指定构造方法,无论是有参、无参的构造方法,都不会自动添加无参的构造方法

7、构造方法的重载:方法名相同,但参数不同的多个方法,调用时会自动根据不同的参数选择相应的方法

8、构造方法不但可以给对象的属性赋值,还可以保证给对象的属性赋一个合理的值

六、静态变量static

1、java中被static修饰的成员称为静态成员或类成员,它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享,静态成员可以使用类名直接访问,也可以使用

对象名进行访问

注意:静态成员属于整个类,当系统第一次使用该类时,就会为其分配内存空间直到该类被卸载才会进行资源回收。

2、静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。

如果想在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量【非静态方法一样】

3、static使用之静态初始化块

注:静态初始化只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的或成员变量

举个例子:

运行结果:

运行结果表明:程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法,由于静态初始化块只在类中加载时执行一次,所以当再次创建hello2时并未执行静态初始化块

七、面向对象特性

三大特性:封装、继承、多态

封装

(1)概念:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问

(2)好处:a.只能通过规定的方法访问数据   b.隐藏类的实例细节,方便修改和实现

(3)步骤  a.修改属性的可见性,【如:private 】 b.创建getter/setter方法【用于属性的读写】  c.在getter/setter方法中加入属性控制语句【对属性值的合法性进行判断】

八、java中的包

1、包的作用:

(1)管理java文件

(2)解决同名文件冲突

2、定义包:package包名

注:必须放在java源程序的第一行

包名间可以使用"."号隔开

eg:com.lala.MyClass

4、包的使用

(1)可以通过import关键字,在某个文件使用其他文件中的类

import com.haha.music.MyClass

(2)java中,包的命名规范是全小写字母拼写

(3)使用的时候不但可以加载某个包下的所有文件

eg:com.haha.*

也可以加载某个具体子包下的所有文件

eg:com.haha.music.*

九、java中的访问修饰符

作用:可以修饰属性和方法的访问范围

十、java中的this关键字

1、this关键字代表当前对象

  this.属性 操作当前对象的属性

  this.方法 调用当前对象的方法

2、封装对象的属性的时候,经常会使用this关键字

十一、java中的内部类

1、什么是内部类

内部类就是定义在另外一个类里面的类,与之对应,包含内部类的被称为外部类

内部类的主要作用:

(1)内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类

(2)内部类的方法可以直接访问外部类的所有数据,包括私有的数据

(3)内部类所实现的功能使用外部类同样可以实现,只是有时候用内部类更方便

内部类可分可以有几种

1、成员内部类

2、静态内部类

3、方法内部类

4、匿名内部类

2、java中的静态内部类

静态内部类是static修饰的内部类,这种内部类的特点是:

(1)、静态内部类不能直接访问外部类的非静态成员,但可以通过new外部类().成员的方式访问

(2)如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员

(3)创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名 = new 内部类();

3、java中的方法内部类

方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内可以使用

注:由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和static修饰符

十二、继承

1、继承的概念

继承是类与类的一种关系,是一种“is a“的关系

注:java中类是单继承的

2、继承的好处:子类拥有父类的所有属性和方法

复用代码

3、语法规则:

class 子类 extends 父类

例:class Dog extends Animal{

}

4、方法的重写

1、什么是方法的重写

如果子类对继承父类的方法不满意,是可以重写父类继承的方法的,当调用方法时会优先调用子类的方法。

2、语法规则:

a、返回值类型

b、方法名

c、参数类型及个数

都要与父类继承的方法相同,才叫方法的重写

2、继承的初始化顺序

(1)、初始化父类再初始子类

(2)、先执行初始化对象中属性,再执行构造方法中的初始化

java学习二的更多相关文章

  1. java学习(二)多态中成员变量详解

    今天我总结了一下java多态中成员变量的赋值与调用 举一个我当初做过的小案例: class Fu{ int num; void show(){} } class Zi extends Fu{ //in ...

  2. 《java学习二》jvm性能优化-----认识jvm

    Java内存结构 Java堆(Java Heap) java堆是java虚拟机所管理的内存中最大的一块,是被所有线程共享的一块内存区域. 在虚拟机启动时创建.此内存区域的唯一目的就是存放对象实例,这一 ...

  3. 《java学习二》并发编程

    多线程创建方式 1.继承thread类,重写run方法 CreateThread createThread = new CreateThread();     ------createThread  ...

  4. Java学习:二 基础

    2014 - 5 - 22 上午 Java对大小写敏感.   点号(.)用于调用方法,Java的能用语法是: object.method(parameters);   Java中的常量声明使用fina ...

  5. java学习(二)--excel导出

    public static String writeFile(String fileName, String[][] content) { WritableWorkbook wwb = null; S ...

  6. java学习二 数据类型自动提升 0x开头的数据是 16进制且是int型

    变量只能定义一次,不能定义两次, 变量的作用域:当前的大括号与子括号才有效 变量的作用:存储值,取值 整型:向上自动升级,向下强制降级 char,byte,shot参与运算时候自动提升为int型 因为 ...

  7. Java学习-039-源码 jar 包的二次开发扩展实例(源码修改)

    最近在使用已有的一些 jar 包时,发现有些 jar 包中的一些方法无法满足自己的一些需求,例如返回固定的格式,字符串处理等等,因而需要对原有 jar 文件中对应的 class 文件进行二次开发扩展, ...

  8. Java学习-046-日志抓取合并后排序问题解决方案之 --- log4j 二次定制,实现日志输出添加延时10ms

    自3月25至今,已经好久没有写学习日志了,今天在写日志抓取合并的小方法,发现抓取后的日志并米有依据系统执行的日志顺序排序.日志抓取排列逻辑如下: 通过日志标识,从各个日志文件(例如 use.log,e ...

  9. Java学习-028-JSON 之二 -- 数据读取

    JSON数据由 JSONObject.JSONArray.key_value 组合而成.通常来说,JSONObject 可以包含 JSONObject.JSONArray.key_value:JSON ...

随机推荐

  1. centos7 添加用户,组

    centos7添加用户,组. groupadd projectUsers //添加组,组名projectUser. cat /etc/group //查看最后一行是projectUser. 添加用户并 ...

  2. WinForm控件之【DateTimePicker】

    基本介绍 时间控件应用较为广泛,属性设置项也比较完善是非常好用的控件. 常设置属性.事件 CustomFormat:当Format属性设置为自定义类型时可自定义控件时间的显示格式: Enabled:指 ...

  3. MyBatis从入门到精通(1):MyBatis入门

    作为一个自学Java的自动化专业211大学本科生,在学习和实践过程中"趟了不少雷",所以有志于建立一个适合同样有热情学习Java技术的参考"排雷手册". 最近在 ...

  4. 【动态规划法(DP)】-C++

    360百科定义: 动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法.20世纪50年代初美国数学家R.E.Bell ...

  5. 【拓扑排序】排队-C++

    描述 今天,学校老师让同学们排成一队,准备带大家出去玩,一共有 n 名同学,排队的时候同学们向老师提了 m 条要求,每一条要求是说同学 x 一定要排在同学 y 之前,老师现在想找到一种排队方式可以满足 ...

  6. 个人永久性免费-Excel催化剂功能第69波-专业图表库新增图表-刘万祥老师中国地图

    Excel催化剂的[专业图表库],仅提供一个工具的输出,让用户可以在制作专业图表过程中更低的门槛,更快速的完成所想要实现的图表.具体参考:第69波-打造最专业易用的商务图表库https://www.j ...

  7. 前端插件之Bootstrap Dual Listbox使用

    工欲善其事,必先利其器 对于很多非专业前端开发来说写页面是非常痛苦的,借助框架或插件往往能够达到事半功倍的效果,本系列文章会介绍我在运维系统开发过程中用到的那些顺手的前端插件,如果你是想写XX管理系统 ...

  8. Elasticsearch 7.x Nested 嵌套类型查询 | ES 干货

    一.什么是 ES Nested 嵌套 Elasticsearch 有很多数据类型,大致如下: 基本数据类型: string 类型.ES 7.x 中,string 类型会升级为:text 和 keywo ...

  9. 如何挑选node docker镜像

    如何挑选node docker镜像 在使用Jenkins构建前端项目的时候遇到一点问题: node的版本问题. 由于可能编译的项目历史不同,所依赖的node版本也各有千秋,直接把所有项目都升级到最新的 ...

  10. 林大妈的JavaScript基础知识(一):JavaScript简史

    前言:做一名Web设计师是一件令人兴奋的事.在Web技术中,JavaScript是一个经历从被人误解到万众瞩目的巨大转变,在历史的冲击中被留存下来的个体.因为JavaScript的引导,Web开发也从 ...