实现接口 vs 继承类
1.接口和继承解决的问题不同
- 继承的价值主要在于:解决代码的复用性和可维护性
- 接口的价值主要在在于:设计好各种规范(方法),让其它类去实现这些方法
2.接口比继承更加灵活
接口比继承更加灵活,继承满足 is - a 关系,接口满足 like - a 关系
3.接口在一定程度上实现代码解耦
小结:当子类继承父类就自动拥有了父类的功能
如果子类需要扩展功能,可以通过实现接口的方式扩展
可以理解为实现接口时java单继承机制的一种补充
public class ExtendVsInterface { public static void main(String[] args) { litterMonkey litterMonkey = new litterMonkey("悟空"); litterMonkey.climb(); litterMonkey.fly(); litterMonkey.swim(); } } //父类 class monkey{ private String name; public monkey(String name) { this.name = name; } public void climb(){ System.out.println("猴子会爬树"); } public String getName() { return name; } public void setName(String name) { this.name = name; } } //鸟的飞行方法 interface IA{ void fly(); } //游泳方法 interface IB{ void swim(); } //子类 class litterMonkey extends monkey implements IA,IB{ public litterMonkey(String name) { super(name); } //实现鸟的飞行方法 @Override public void fly() { System.out.println("猴子学会了鸟的飞行"); } //实现游泳方法 @Override public void swim() { System.out.println("实现游泳方法"); } }