接口和抽象类区别。

 

 

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

 

转载于:https://www.cnblogs.com/longhs/p/5380794.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值