三.代码段
1.构造代码段(生存周期和对象一致)
构造代码段 直接在类中写的代码段, 就是构造代码段。
构造代码段中的代码, **在每次实例化对象的时候执行,执行顺序优先于构造方法.。** 一般在构 造方法中, 对对象的某些属性进行初始化的赋值。
构造代码段, 功能与无参构造方法是有重复的, 实际使用中, 以构造方法的使用较多。
2.静态代码段(生存周期和类一致)
直接在类中写的代码段, 用static修饰, 就是静态代码段。
静态代码段, 当类第一次加载到内存中的时候执行, 一般进行属性的初始化赋值, 或者进行 资源加载,执行顺序优先于main 。
四.Object类
Object类:是java继承体系中所有类的⽗类,Object类没有⽗类.
作为所有类的⽗类,它⾥⾯有11个⽅法,相当于所有⼦类都默认有这些⽅法,所以都很重 要.
五.接口
5.1接口的定义
定义接口,需要使用到关键字 interface
接口中可以定义:
-
属性
-
接口中的属性,默认都是静态常量,访问权限都是public。
-
-
方法
-
接口中的方法,默认都是抽象方法,访问权限都是public。
-
注意:
一般接口中不写成员变量,只写方法,相当于制定规则,所以又将接口称为方法列表
接口的作用 :
让java从单继承间接的实现了多继承,扩充了原来的功能,我们可以认为接口是类的补充.
5.2接口和抽象类的异同
相同点 :
-
都可以编译成字节码文件。
-
都不能创建对象。
-
都可以声明引用。
-
都具备Object类中所定义的方法。
-
都可以写抽象方法。
不同点 :
-
接口中所有的属性,都是公开静态常量,缺省使用 public static final 修饰。
-
接口中所有的方法,都是公开抽象方法,缺省使用 public abstract 修饰。
-
接口中没有构造方法、构造代码段、静态代码段。
5.3 接口的实现(implements)
接口,需要让类实现,表示这个类具有了这个接口定义的能力。因为接口中有很多的抽象方 法,因此类在实现接口的时候,如果不是抽象类,必须要重写实现接口中所有的抽象方法。
一个类可以实现多个接口
我们使用接口进行行为的约束,规则的制定。接口表示一组能力,那么一个类可以接受多种 能力的约束。类比于合同来说,一个人是可以签订多份合同的。因此,一个类可以实现多个 接口。实现多个接口的时候,必须要把每一个接口中的方法都实现了。
注意:如果一个类实现的多个接口中,有相同的方法,实现类只需要实现一次即可。
5.4. 接口的继承
接口之间也是存在继承关系的,与类的继承相似,子接口可以继承到父接口中所有的成员 的。
与类的继承不同,接口之间的继承是多继承。也就是说,一个接口是可以有多个父接口的。 子接口可以继承到所有的父接口中的成员。
注意:
上述,一个类实现多个接口的时候,多个接口中不能存在有冲突的方法。接口在继承父接口 的时候,也不允许同时继承两个有方法冲突的接口。
父类与接口的功能如何分配?
一般父类中放的是主要功能,接口中放的是额外的功能,接口作为父类的补充
当一个类实现的接口中出现了相同的方法,子类中实现方法的时候会不会混淆?
不会,接口中的方法都是抽象的,要通过子类写具体的实现.我们在调用方法时,最终看的功能,
而功能只有子类中的一份
5.5接口的多态
接口的引用,可以指向实现类的对象。与类的多态相似,同样存在向上转型和向下转型。
-
向上转型:实现类类型转型为接口类型。
-
是一个隐式转换,不需要任何的修饰。
-
向上转型后的接口引用,只能访问接口中的成员。
-
-
向下转型:接口类型转型为实现类类型。
-
是一个显式转换,需要强制类型转换。
-
-
向下转型后的实现类引用,将可以访问实现类中的成员。
5.6接口的新特性(了解)
在Java8中,为接口添加了两个新特性:
-
static方法:可以在接口中定义静态方法,静态方法不是抽象方法,是有实现部分的。同 时,这个静态方法,只能由当前的接口名字调用,接口的引用和实现类都是不能使用 的。
-
default方法:修饰接口中的方法,default修饰的方法可以添加默认的实现部分。此时, 实现类在实现接口的时候,对于这些方法可以重写,也可以不重写。