- 概念
类是构造对象的模板或蓝图
由类构造对象的过程称为创建类的实例
对象中的数据成为实例字段,操作数据的过程称为方法
实现封装的关键在于,绝不能让类中的方法直接访问其他类中的实例字段
对象变量并没有实际包含一个对象,它只是引用了一个对象:
Date deadline = new Date();
表达式new Date()构造了一个Date类型的对象,它的值是对新创建对象的一个引用,这个引用存储在变量deadline中
在JAVA10中,如果可以从变量的初始值推导出它们的类型,那么可以用var关键字来声明局部变量,而无需指定类型
Employee harry = new Employee("Harry Hacker",50000,1989,10,1);
在JAVA10中可以用以下代码替换:
var harry = new Employee("Harry Hacker",50000,1989,10,1);
var关键字只能用于方法中的局部变量
- 类之间的关系:
1)依赖(“uses-a”)
应该尽可能减少类之间的耦合
2)聚合(“has-a”)
3)继承(“is-a”)
- 构造器(constructor)
构造器是一种特殊的方法,用来构造并初始化对象
构造器的名字应该与类名相同
每个类可以有一个以上的构造器
构造器没有返回值
- 更改器(getter)与访问器(setter)
调用更改器方法,对象的状态会改变
访问器方法只访问对象而不修改对象
-
隐式参数(implicit)与显式参数(explicit)
number007.raiseSalary(5); 方法名前的number007对象为隐式参数,方法名后的括号内的数值5为显式参数
-
静态字段与静态方法
静态字段被标记为static,它属于类,不属于任何单个的对象
静态方法是不在对象上执行的方法,它没有隐式参数
静态方法不能访问实例字段,因为它不在对象上执行操作,但是静态方法可以访问静态字段
建议用类名来调用静态方法
- 重载
如果多个方法有相同的名字、不同的参数,便出现了重载,查找匹配的过程称为重载解析
方法的签名 = 方法名 + 参数类型,返回类型不是方法签名的一部分
- 默认字段初始化
如果在构造器中没有显式地为字段设置初值,则执行字段的默认初始化:
数值为0
布尔值为false
对象引用为null
方法中的局部变量必须明确地初始化,但在类中,如果没有初始化类中的字段,将会自动初始化为默认值
- 调用另外一个构造器
如果构造器第一个语句形如this(...),这个构造器将调用同一个类的另一个构造器
调用构造器的具体处理步骤:
1)如果构造器的第一行调用了另外一个构造器,则基于所提供的参数调用第二个构造器
2)否则,
a)所有数据字段初始化为其默认值
b)按照在类声明中出现的顺序,执行所有字段初始化方法和初始化块
3)执行构造体主体代码
- 包(package)
包将类组织在一个集合中
一个类可以使用所属包中的所有类,以及其他包中的公共类
使用import语句导入一个特定类或整个包
要想将类放入包中,就必须将包的名字放在源文件的开头:
package com.horstmann.corejava
- 类设计技巧
1)一定要保证数据私有
2)一定要对数据进行初始化
3)不要在类中使用过多的基本类型
5)分解有过多职责的类
6)类名和方法名要能体现它们的职责