java SE-接口与实现
接口与实现
接口
使用interface可以声明一个接口。
接口体
- 接口体内的变量都是public权限(可省略final public static)。
- 接口体内的方法都是public的abstract方法(可省略abstract public)。
接口的使用
一个类通过implements关键字来实现一个或多个接口,可以实现接口的一个方法或多个方法。
public接口可被任何类实现;友好型接口可被同一包内的类实现。接口可被多个类实现
理解接口
- 接口只关心操作,不关心如何实现该操作。
- 多个类可实现同一接口,对其方法各有重写,一个类可实现多个接口。
- 子类不希望继承一些方法时,可以考虑实现接口
接口回调
定义:把实现接口的类的实例对象的引用,传给接口声明的变量。
实现:十分类似上转型对象调用其子类重写的方法。因此,接口也不可以调用该子类对象其他的非接口方法。
接口的多态性
与类类似,接口的抽象函数被多个类重写时,也会展现出多态性。
接口VS抽象类
- 接口中只有常量,没有变量;抽象类都可以。
- 接口中只有抽象方法;抽象类中都可以。
- 如果子类除了重写方法外,还需要继承一些变量或非抽象方法,abstract类更合适;如果不需要继承,只是想对一些方法进行重写,考虑使用接口。
面向接口编程
思想:使用接口回调,使接口变量存放实现类的对象的引用,这样可灵活回调各种不同的实现方法。
例如:实现一个广告牌,显示许多公司的广告。难道我们还需要让广告牌去继承一个公司类吗?!显而易见,我们只需要在公司类里面设计一个广告接口,再设计一个广告牌类,该类使用接口的变量作为参数,展示不同的方法。这些不同方法应当由公司的不同子类分别做不同实现,体现出多态性。