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 缉毒(){}
    }
    这是可行的。
    类用于描述事物的共性基本功能。
    接口用于定义的都是事物的额外功能。

  • 相关阅读:
    函数(五)——装饰器,递归调用,匿名函数
    函数(四)——装饰器
    函数(三)
    函数(二)
    函数(一)
    python基础(九)
    python基础(八)
    python基础(七)
    javaweb开发 idea ssm开发(二)
    PHP计算两个经纬度地点之间的距离
  • 原文地址:https://www.cnblogs.com/longhs/p/5380794.html
Copyright © 2011-2022 走看看