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

相关推荐

02-23 00:10
湖南大学 C++
点赞 评论 收藏
分享
徐新高:号已经废了 建议重开一个账号投简历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务