博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
接口和抽象类区别。
阅读量:7114 次
发布时间:2019-06-28

本文共 736 字,大约阅读时间需要 2 分钟。

 

 

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

你可能感兴趣的文章
融云开发漫谈:你是否了解Go语言并发编程的第一要义?
查看>>
React 教程:快速上手指南
查看>>
Python 的 heapq 模块源码分析
查看>>
Jitsi快捷安装
查看>>
区块链技术的基本特点
查看>>
阿里云容器服务DaemonSet实践
查看>>
一个游戏拨账系统的数据库结算设计
查看>>
Kafka Network层解析
查看>>
css加载会造成阻塞吗?
查看>>
由一个绝对定位引发overflow:auto滚动问题产生的关于包含块(containing block)的思考...
查看>>
CS-231N-斯坦福李飞飞机器视觉课(Cydiachen版笔记+感悟)
查看>>
推荐一个有趣的Chrome扩展程序-查看任意网站的开发技术栈
查看>>
聊聊storm TridentWindowManager的pendingTriggers
查看>>
React 解决fetch跨域请求时session失效
查看>>
翻译_只需20行代码创造JavaScript模板引擎(二)
查看>>
Blockchain和Tangle哪一个是未来?
查看>>
apicloud拉起小程序并传递参数
查看>>
虚拟机Centos6.8安装MYSQL5.7,本地Navicat连接
查看>>
简单聊聊DOM
查看>>
【JavaScript】JavaScript Array 对象(数组)
查看>>