抽象类和接口

定义

抽象类

    如果类中有些函数成员只有名称,而没有函数的实现体,这种类称为“抽象类”,通过抽象类实现多态性,与集成多态性本质上是相同的。

接口

    在软件世界中,我定义一个三相电源接口IPower,其实是真实电源接口的一个“设计蓝图”

    

    计算机类实现了电源接口,但是我们不能说,计算机就是“电源”

    若我们再定义一个“智能设备”抽象类,计算机类继承了它,我们可以说,计算机就是“智能设备”。这正是抽象类和接口的本质区别:抽象类与它的子类具有“是一种”关系,是父与子的“家族”关系;而实现了“某某接口”的类表明该类有“某某”功能。

相同点

    1、他们都不能实例化

    2、他们都包含未实现的方法声明

    3、他们的派生类必须实现未实现的方法

    4、他们把不可变的与可变的分离开来;不可变的是方法的签名,可变的是方法的实现体——留给他们的派生类去实现


不同点

    

    一个类可以继承多个接口,但只能继承一个类


例子 

    1、狗类和猫类是动物类派生的,是“是一种”关系。而“叫”接口仅仅是一种功能,虽然狗类实现了它,但他们之间不是“是一种”的关系,因为不能认为狗是一种“叫”

    2、铁门、木门都是“门”,你想要一个“门”,我给不了(不能实例化一个抽象类),但我可以给你具体的铁门或木门;而且只能是门(类的单继承)

    3、一个门可有锁接口,也可有门铃接口(接口的多继承)

    4、“门”(抽象类)定义了你是什么,“锁”(接口)规定了你能做什么

    5、一个接口最好只能做一件事,你不能要求锁也能发出声音吧(接口污染)



评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阳光下是个孩子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值