JAVA核心技术卷1_读书笔记 02_对象与类(第4章)

128 阅读3分钟
  • 概念

类是构造对象的模板或蓝图

由类构造对象的过程称为创建类的实例

对象中的数据成为实例字段,操作数据的过程称为方法

实现封装的关键在于,绝不能让类中的方法直接访问其他类中的实例字段

对象变量并没有实际包含一个对象,它只是引用了一个对象:

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)不要在类中使用过多的基本类型

4)不是所有字段都需要单独的字段访问器和字段更改器

5)分解有过多职责的类

6)类名和方法名要能体现它们的职责

7)优先使用不可变的类