定义接口用的不是class,而是interface。
接口中常见的成员:而且这些成员都是固定的修饰符。
1、全局变量:public static final (不写的时候java会默认添加上去,但是阅读性不好)
2、抽象方法:public abstract
接口中的成员都是公共权限的。
类与类之间是继承关系,类与接口之间是实现关系。
接口实现implements
接口不可以实例化,只能由实现了接口的子类覆盖了接口中所有的抽象方法后,该子类才可以实例化,否则这个子类就是一个抽象类。
在java中不直接支持多继承,因为会出现调用的不确定性。所以java将多继承机制进行改良,在java中变成了多实现。
一个类可以实现多个接口。
一个类在继承一个类的同时还能实现多个接口。
抽象类和接口的异同点:
相同点:都是不断向上抽取而来的。
不同点:
1、抽象类需要被继承,而且只能单继承
接口需要被实现,而且可以多实现
2、抽象类中可以定义抽象方法和非抽象方法,子类继承后,可以直接使用非抽象方法
接口中只能定义抽象方法,必须由子类去实现
3、抽象类的继承,是is a关系,在定义该体系的基本共性内容。
接口的实现是 like a 关系。在定义体系额外功能。
一个类如果实现接口,则必须实现接口中的所有抽象方法,除非这个类是一个抽象类(适配器)。
适配器设计模式:
使用抽象类和接口同时完成。先用抽象类实现接口中的空方法,再由实体类继承这个抽象类。
interface MyInter1{ public void show1();}
interface MyInter2{ public void show2();}
interface MyInter3{ public void show3(); public void show4();}
//适配器
abstract class Adapter implements MyInter1,MyInter2,MyInter3{
public void show1();//空实现
public void show2();
public void show3();
public void show4();
}
//MyClass类只想重写方法1,3
Class MyClass extends Adapter {
public void show1();
public void show3();
}