继承类 and 实现接口

众所周知,一个Java类只能extends一个类,但可以implements多个接口。

那么什么时候用继承,什么时候用实现接口呢?


继承关系表明了两个类之间的抽象联系;

而接口更像是插件,与实现类并没有抽象联系。


举个例子

public class Animal {
    public void run() {
        System.out.println("Animal can run.");
    }
}
public interface Flyable {
    void fly();
}
public class Pig extends Animal implements Flyable{
    @Override
    public void fly() {
        System.out.println("Aah, pig can fly!");
    }
    @Override
    public void run() {
        // super.run();
        System.out.println("Pig can run.");
    }
}

以上是两个类和一个接口,显然Animal和Pig是存在抽象联系的,Pig是Animal的子类。所以是Pig extends Animal。

众所周知,猪是不会飞的(飞猪除外),所以Pig类中不会存在fly行为。如果有种基因突变的猪会飞了怎么办呢?这个时候可以为猪添加一个飞行插件,通过implements Flyable接口使猪获得飞行的能力。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容