实现接口 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("实现游泳方法");
}
}