zoukankan      html  css  js  c++  java
  • 接口和抽象类区别。

    abstract class 犬{
    abstract void 吃();
    abstract void 叫();
    }
    interface 犬{
    abstract void 吃();
    abstract void 叫();
    }
    添加一个功能,缉毒。单独描述一个缉毒功能犬。
    class 缉毒犬 extends 犬{
    void 吃(){}
    void 叫(){}
    void 缉毒(){}
    }

    class 缉毒犬 implements 犬{
    void 吃(){}
    void 叫(){}
    void 缉毒(){}
    }
    缉毒犬是犬中的一种,is a 关系。
    犬用于描述所有功能犬的基本功能,用class定义。父类。
    所以犬不适合定义成接口。

    (背景:如果现在有缉毒猪,缉毒机器人..。我们应该怎么做呢?
    现在是狗,猪,机器人都有缉毒这个功能。为了不让缉毒功能重复定义,我们把它抽象成接口。)

    class 缉毒猪{
    void 缉毒(){}
    }
    具备缉毒功能的有很多。缉毒功能需要抽取。抽取到类中,还是抽取到接口中?
    都试一下,先定义成类。
    abstract class 缉毒{
    abstract void 缉毒();
    }
    不行,缉毒犬继承犬类,就不能继承其它类,因为类不能多继承。

    定义成接口试试
    interface 缉毒{
    abstract void 缉毒();
    }

    class 缉毒犬 extends 犬 implements 缉毒{
    void 吃(){}
    void 叫(){}
    void 缉毒(){}
    }
    这是可行的。
    类用于描述事物的共性基本功能。
    接口用于定义的都是事物的额外功能。

  • 相关阅读:
    【项目】项目75
    【项目】项目74
    【项目】项目73
    【项目】项目72
    【项目】项目71
    【项目】项目70
    【项目】项目69
    【项目】项目68
    【项目】项目67
    .Net随笔:解决VS2008,重新生成解决方案,很慢
  • 原文地址:https://www.cnblogs.com/longhs/p/5380794.html
Copyright © 2011-2022 走看看