目录
1、面向对象程序设计概述
1.1、类
1.2、对象
1.3、识别类
OOP,首先从设计类开始,然后再往每个类中添加方法。
1.4、类之间的关系
在类之间,最常见的关系有:
- 依赖(“uses-a”)
- 聚合(“has-a”)
- 继承(“is-a”)
继承(inheritance),即“is-a”关系,表示一个更特殊的类与一个更一般的类之间的关系。
2、使用预定义类
2.1、对象与对象变量
在Java程序设计语言中,使用构造器构造新实例。构造器是一种特殊的方法,用来构造并初始化对象。构造器的名字应该与类名相同。一个对象变量并没有实际包含一个对象,而仅仅引用一个对象。
在Java中,任何对象变量的值都是对存储在另一个地方的某个对象的引用。new操作符的返回值也是一个引用。
2.2、Java类库中的LocalDate类
时间是用距离一个固定时间点的毫秒数(可正负)表示的,这个时间点就是所谓的纪元,它是UTC时间1970年1月1日00:00:00。
3、用户定义类
构造器的相关特征:
- 构造器与类同名
- 每个类可以有一个以上的构造器
- 构造以可以有0个、1个或多个参数
- 构造器没有返回值
- 构造器总是伴随着new操作一起调用
3.1、封装的优点
1.可以改变内部实现,除了该类的方法外,不会影响其他代码。
2.更改器方法可以执行错误检查。
3.2、基于类的访问权限
方法可以访问所属类的私有特性,而不仅限于访问隐式参数(this)的私有特性。
3.3、final实例域
可以将实例域定义为final。构建对象时必须初始化这样的域。也就是说,必须确保在每一个构造器执行之后,这个域的值被设置,并且在后面的操作中,不能够再对它进行修改。
final修饰符大都应用于基本类型域,或不可变类的域。
4、静态域和静态方法
4.1、静态域
如果将域定义为static,每个类中只有一个这样的域。而每个对象对于所有的实例域却都有自己的一份拷贝。
4.2、静态常量
static final
4.3、静态方法
静态方法是一种不能向对象实施操作的方法。可以认为静态方法是没有this参数的方法。
在下面两种情况下使用静态方法:
- 一个方法不需要访问对象状态,其所需参数都是通过显示参数提供。
- 一个方法只需要访问类的静态域。
5、方法参数
按值调用表示方法接收的是调用者提供的值。而按引用调用表示方法接收的是调用者提供的变量地址。一个方法可以修改传递引用所对应的变量值,而不能修改值调用所对应的变量值。
Java程序设计语言总是采用按值调用。也就是说,方法得到的是所有参数值得一个拷贝,特别是,方法不能修改传递给它的任何参数变量的内容。
6、对象构造
6.1、重载
有些类有多个构造器。这种特征叫重载。如果多个方法有相同的名字、不同的参数,便产生了重载
6.2、默认域初始化
如果在构造器中没有显示的给域赋予初值,那么就会被自动地赋为默认值:数值为0、布尔值为false。对象引用为null。
6.3、无参数的构造器
如果写一个类时没有编写构造器,就会为你提供一个无参数构造器。这个构造器将所有的实例字段设置为默认值。如果类中提供了至少一个构造器,但是没有提供无参数的构造器,那么构造对象时如果不提供参数就是不合法的。
仅当类没有任何其他构造器的时候,才会得到一个默认的无参数构造器。
6.4、调用另一个构造器
如果构造器的第一个语句形如this(...),这个构造器将调用同一个类的另一个构造器。
6.5、初始化块
Java的第三种机制,称为初始化块。在一个类的声明中,可以包含多个代码块。只要构造类的对象,这些块就会被执行。
由于初始化数据字段有多种途径,所以列出构造过程的所有路径可能让人很困惑。下面是调用构造器的具体处理步骤:
1、如果构造器的第一行调用了另一个构造器,则基于所提供的参数执行第二个构造器。
2、否则,
- 所有数据字段初始化为其默认值(0,false或null)
- 按照在类声明中出现的顺序,执行所有字段初始化方法和初始化块
3、执行构造器主体代码
6.6、对象析构与finalize方法
7、包
使用包的主要原因是确保类名的唯一性。
7.1、类的导入
更简单更常用的方式是使用import语句。import语句是一种引用包含在包中类的简明描述。一旦使用了import语句,在使用类时,就不必写出包的全名了。
在包中定位类时编译器的工作,类文件中的字节码总是使用完整的包名引用其他类。
7.2、静态导入