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