接口定义
public interface Pet{
public abstract void beFriendly();
}
实现
public class Dog extends Canine implements Pet{
public void beFriend(){方法体};
}
接口的内容全部为抽象,必须由继承者实现。
其直观作用是可以让继承者继承超过一个的来源。
适用场景是:当你需要一个可被继承的特性又不适合加入基类(并非所有子类符合特性)加入接口补充。
比如在animal类下某些类加入宠物特性,
一、如果把宠物方法加入基类中;
明显不是所有动物都应该有宠物特性,而且无法多态哪怕是宠物其宠物方法也不尽相同,
二、把宠物方法设定为抽象类,让每个子类重写;
无疑降低了继承的作用,增加了工作。
三、在需要时直接在子类写方法
没有多态性,也没有类似“合约性”显然宠物是一类动物的特性不是几个需要合约性。
此时接口的补充能力出现了
我们可以写一个宠物接口,让所有需要的子类实现(继承)来补充继承树
不同的继承树可以实现一个接口,一个类也可以实现多个接口。
相比之下继承虽然十分便捷高效,同时也限制了一些设计,那么在你想进一步设计类的实现使用接口