2.接口的定义格式:①使用interface代替class②方法体中一定有抽象的方法③方法体中不能有普通的成员变量,只能有(public static final)数据类型 变量名=值;静态常量。
3.接口的特点;接口中可以定义变量,但因public static final修饰,称之为常量
接口中也可以定义方法,但必须用public abstract修饰为抽象方法,所以不能创建对象
通过接口创建对象,必须通过子类实现,且子类的方法需要重写。
4.实现接口:实现的动作类似继承,只是关键字不同,使用implements关键字。
具体的子类可以实现接口;implements,可以多实现,然后对所有的抽象方法重写,在类实现接口后,该类就会将接口中的抽象方法继承过来,此时该类需要重写该抽象方法,完成具体的逻辑。
class 类 implements 接口 {
重写接口中方法//是接口功能的具体实现
}
接口可以继承接口,多继承,用逗号隔开。extends
1 interface Fu1{
2 void show();
3 }
4 interface Fu2{
5 void show1();
6 }
7 interface Fu3{
8 void show2();
9 }
10 interface Zi extends Fu1,Fu2,Fu3{
11 void show3();
12 }//需要对上述4个方法进行重写
接口的多实现,class 类 implements 接口,接口,接口 通过类实现多实现
通过接口实现多继承//对所有的抽象方法都需要重写
注.具体的类继承过程中,会继承多个接口,若多个接口中存在相同的方法,但因是全都是抽象的方法,需要进行方法的重写,不会发生调用的不确定性。
但是子类如果继承多个抽象类,抽象类中可能会存在方法名相同的普通方法,所以存在调用的不确定性。
5.接口的好处:类 extends 抽象类 implements 接口,继承公共的属性,实现额外的功能
汇总非全部类都具有的抽象的方法编写接口,再具体通过实现类具体定义方法,来实现这些接口中具备的功能
实现功能的定义与实现区分
接口l 接口中定义功能,当需要具有该功能时,`只声明了应该具备该方法,是功能的声明。
实现接口l 在具体实现类中重写方法,实现功能,是方法的具体实现。
方法的重载、方法的重写、协变函数
方法的重写:在继承中体现,子类继承父类的方法,修饰符、数据类型、方法名、参数列表一致,由子类对父类方法进行重写。
方法的重载:在同一个类中,方法名一致,参数列表的数据类型、顺序、个数不一致
协变函数:方法名一致,返回值不一样。不适用与接口或类中
类与接口
类:单继承 extends 继承公共的属性和方法 由普通类实现接口
接口:类多继承implements 接口可以多继承 但不能实现接口