注意知识点:1.如果一个类实现了接口,那就必须实现重写接口类中的方法(特性类似于抽象方法),否侧需要将该类设置为抽象类;
2.一个类实现了接口,这个类就具有了接口中的所有行为能力(类似与继承;
3.实例化接口
3.1.如果想使用接口创建对象,需要用实现接口的类来实例化对象(使用接口的引用指向实现接口的类对象),
3.2.只能用实现接口的类来实例化对象,而且接口本身不能创建对象(特性类似于抽象类);
目录
java 接口
1.接口
可以使用接口让两个或者多个没有继承关系的类产生关系
1、创建时右键包名选interface
2.接口类名一般以大写"I"开头
2.接口类的特点:
1.接口访问修饰符:public 默认,可以不写
2..接口中的方法没有方法体;
3.接口当中抽象方法可以不写abstract关键字;
3.类使用implements 来实现接口
如果一个类实现了接口,那就必须实现重写接口类中的方法(特性类似于抽象方法),否侧需要将该类设置为抽象类
一个类实现了接口,这个类就具有了接口中的所有行为能力(类似与继承)
以下两个类分别实现了接口Iphoto
Camera类
FourthPhone类
4.实例化接口
1.如果想使用接口创建对象,需要用实现接口的类来实例化对象(使用接口的引用指向实现接口的类对象),
2.只能用含有接口方法的类来实例化对象,而且接口本身不能创建对象(特性类似于抽象类)
注意:ip对象只能调用FourthPhone类中重写接口中方法的那些方法;(特性类似于向上转型)
5.接口类中可以包含常量
接口中无变量,只能定义静态常量,且定义时就必须初始化,修饰符默认public static final,//static意义:使接口常量在测试类中直接调用,无需对象实例化,final意义:定义属性时为常量,定义方法时子类不可覆写,定义类时不可被继承.
接口无法实例化,原因包含了抽象方法,可理解为特殊的抽象类
接口名.常量去访问接口中的常量
默认public static final在Test可以通过接口类名直接访问该常量(因为是static,所以可以直接访问)
通过接口类引用指向的类对象调用:
如果在调用接口类的类中有与接口类中定义了与接口类中名字相同的常理,则在使用接口类引用指向调用接口类的类对象使用该常量时 仍是使用接口类中的常。
在调用接口类的类中有与接口类中定义了与接口类中名字相同的常理TEMP:
在Test中调用
6. 默认方法和静态方法
jdK1.8中增加了:
default :默认方法,可以带方法体
可以在实现类中重写,并可以通过接口的引用调用
tatic :静态方法 可以带方法体
不可以在实现类中重写,可以同接口名调用,不可以通过接口类引用指向的类对象调用
在外部调用
7.多接口继承
一个类可以继承多个接口类,不同的接口用逗号","隔开
7.1接口中的同名方法
当一个类继承了多个接口,而接口存在同名的默认方法,对于继承多个接口的类而言,必须重写这个同名的默认方法方法,
FourthPhone的父类为ThirdPhone,ThirdPhone有与接口Iphon或者INet同名的方法,那么默认情况他会调用父类的重命名方法
输出结果:为父类中的重名方法,如果FourthPhone重写了这个重名的方法,默认就会调用FourthPhone重写的方法
7.2 接口中同名变量
在一个类内,如果指定的若干个接口之间有同名的变量的时候,在此类中调用接口中含有同名的变量的时候也会报错。需要明确指明调用的是谁的变量来避免调用歧异。
继承的父类中与继承的接口中有同名的变量:与前面的同名方法不同,不会默认调用父类的同名变量,而是调用歧异,需要在本类中定义同名的变量才不会出错
8.接口的继承
接口也可以是实现继承,并且可以实现多继承
如果一个类实现了一个子接口(ISon)他就是需要实现接口中所有的方法
8.1 继承的多接口存在同名的默认方法
如果多个父类接口中存在重名默认方法,则需要在子类接口中重写重名默认方法
自己重写: