6.1Java面向对象学习的三条主线
①Java类及类的成员:属性、方法、构造器;代码块、内部类
②面向对象的三大特征:封装性、继承性、多态性、(抽象性)
③其它关键字:this、super、static、final、abstract、interface、package、import等
6.2 面向对象的两个要素
类:对一类事物的描述,是抽象的、概念上的定义
对象:是实际存在的该类事物的每个个体,因而也称为实例(instance)
6.3 设计类,其实就是设计类的成员
属性 = 成员变量 = field = 域、字段
方法 = 成员方法 = 函数 = method
6.4 类和对象的使用
①创建类,设计类的成员
②创建类的对象
③通过“对象.属性”或“对象.方法”调用对象的结构
6.5对象的内存解析
6.6属性(成员变量)和局部变量
6.6.1相同点
①定义变量的格式:数据类型 变量名 = 变量值
②先声明,后使用
③变量都有其对应的作用域
6.6.2不同点
①在类中声明的位置的不同
属性:直接定义在类的一对{}内
局部变量:声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量
②关于权限修饰符的不同
属性:可以在声明属性时,指明其权限,使用权限修饰符。
常用的权限修饰符:private、public、缺省、protected
局部变量:不可以使用权限修饰符。
③默认初始化值的情况
属性:类的属性,根据其类型,都有默认初始化值。
整型(byte、short、int、long):0
浮点型(float、double):0.0
字符型(char):0 (或'\u0000')
布尔型(boolean):false
引用数据类型(类、数组、接口):null
局部变量:没有默认初始化值。
意味着,我们在调用局部变量之前,一定要显式赋值。
④在内存中加载的位置
属性:加载到堆空间中 (非static)
局部变量:加载到栈空间
6.7类中方法的声明和使用
6.7.1
方法的声明:权限修饰符 返回值类型 方法名(形参列表){
方法体
}
6.7.2说明
① 关于权限修饰符:默认方法的权限修饰符先都使用public
Java规定的4种权限修饰符:private、public、缺省、protected -->封装性再细说
②返回值类型: 有返回值 vs 没有返回值
如果方法有返回值,则必须在方法声明时,指定返回值的类型。同时,方法中,需要使用
return关键字来返回指定类型的变量或常量:“return 数据”。
如果方法没有返回值,则方法声明时,使用void来表示。通常,没有返回值的方法中,就不需要
使用return.但是,如果使用的话,只能“return;”表示结束此方法的意思。
③方法名:属于标识符,遵循标识符的规则和规范,“见名知意”
④形参列表: 方法可以声明0个,1个,或多个形参。
⑤ 方法体:方法功能的体现。
6.7.3return关键字的使用
1.使用范围:使用在方法体中
2.作用:① 结束方法
② 针对于有返回值类型的方法,使用"return 数据"方法返回所要的数据。
3.注意点:return关键字后面不可以声明执行语句。
6.8匿名对象的使用
6.8.1理解
我们创建的对象,没有显式的赋给一个变量名。即为匿名对象
6.8.2特征
匿名对象只能调用一次。
6.9方法的重载
6.9.1定义
在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
6.9.2
"两同一不同":同一个类、相同方法名
参数列表不同:参数个数不同,参数类型不同
6.9.3判断是否是重载
跟方法的权限修饰符、返回值类型、形参变量名、方法体都没有关系!
6.9.4在通过对象调用方法时,如何确定某一个指定的方法
方法名 ---> 参数列表
6.10可变个数形参的方法
6.10.1具体使用
①可变个数形参的格式:数据类型 ... 变量名
② 当调用可变个数形参的方法时,传入的参数个数可以是:0个,1个,2个,。。。
③ 可变个数形参的方法与本类中方法名相同,形参不同的方法之间构成重载
④ 可变个数形参的方法与本类中方法名相同,形参类型也相同的数组之间不构成重载。换句话说,二者不能共存。
⑤ 可变个数形参在方法的形参中,必须声明在末尾
⑥可变个数形参在方法的形参中,最多只能声明一个可变形参。
6.11值传递机制
如果参数是基本数据类型,此时实参赋给形参的是实参真实存储的数据值。
如果参数是引用数据类型,此时实参赋给形参的是实参存储数据的地址值。
6.12面向对象的特征一:封装与隐藏
6.12.1封装性的体现
我们将类的属性xxx私有化(private),同时,提供公共的(public)方法来获取(getXxx)和设置(setXxx)此属性的值
6.12.2封装性的体现,需要权限修饰符来配合
1.Java规定的4种权限(从小到大排列):private、缺省、protected 、public
2.4种权限可以用来修饰类及类的内部结构:属性、方法、构造器、内部类
3.具体的,4种权限都可以用来修饰类的内部结构:属性、方法、构造器、内部类
总结封装性:Java提供了4种权限修饰符来修饰类及类的内部结构,体现类及类的内部结构在被调用时的可见性的大小。
6.13类的结构之三:构造器(构造方法)的使用
6.13.1构造器的作用
①.创建对象
②.初始化对象的信息
6.13.2说明
①.如果没有显式的定义类的构造器的话,则系统默认提供一个空参的构造器
②.定义构造器的格式:权限修饰符 类名(形参列表){}
③.一个类中定义的多个构造器,彼此构成重载
④.一旦我们显式的定义了类的构造器之后,系统就不再提供默认的空参构造器
⑤.一个类中,至少会有一个构造器。
6.14属性赋值的先后顺序
① 默认初始化
② 显式初始化
③ 构造器中初始化
④ 通过"对象.方法" 或 "对象.属性"的方式,赋值
以上操作的先后顺序:① - ② - ③ - ④
6.15JavaBean的定义
类是公共的
有一个无参的公共的构造器
有属性,且有对应的get、set方法
6.16this关键字的使用
6.16.1this可以用来修饰、调用:属性、方法、构造器
6.16.2this修饰属性和方法
this理解为:当前对象 或 当前正在创建的对象
① 在类的方法中,我们可以使用"this.属性"或"this.方法"的方式,调用当前对象属性或方法。但是,
通常情况下,我们都选择省略"this."。特殊情况下,如果方法的形参和类的属性同名时,我们必须显式
的使用"this.变量"的方式,表明此变量是属性,而非形参。
② 在类的构造器中,我们可以使用"this.属性"或"this.方法"的方式,调用当前正在创建的对象属性或方法。
但是,通常情况下,我们都选择省略"this."。特殊情况下,如果构造器的形参和类的属性同名时,我们必须显式
的使用"this.变量"的方式,表明此变量是属性,而非形参。
6.16.3this调用构造器
① 我们在类的构造器中,可以显式的使用"this(形参列表)"方式,调用本类中指定的其他构造器
② 构造器中不能通过"this(形参列表)"方式调用自己
③ 如果一个类中有n个构造器,则最多有 n - 1构造器中使用了"this(形参列表)"
④ 规定:"this(形参列表)"必须声明在当前构造器的首行
⑤ 构造器内部,最多只能声明一个"this(形参列表)",用来调用其他的构造器
6.17package关键字的使用
1.为了更好的实现项目中类的管理,提供包的概念
2.使用package声明类或接口所属的包,声明在源文件的首行
3.包,属于标识符,遵循标识符的命名规则、规范(xxxyyyzzz)、“见名知意”
4.每"."一次,就代表一层文件目录。
6.18import关键字的使用(导入)
①在源文件中显式的使用import结构导入指定包下的类、接口
②声明在包的声明和类的声明之间
③如果需要导入多个结构,则并列写出即可
④可以使用"xxx.*"的方式,表示可以导入xxx包下的所有结构
⑤如果使用的类或接口是java.lang包下定义的,则可以省略import结构
⑥如果使用的类或接口是本包下定义的,则可以省略import结构
⑦如果在源文件中,使用了不同包下的同名的类,则必须至少有一个类需要以全类名的方式显示。