您的位置:首页 > 编程语言 > Java开发

java学习笔记--关于interface和abstract的一些思考

2017-08-24 21:39 519 查看
最初,我看到abstract这个词呢是很明白的,就是类似于C++当中的virtual。

仅有声明,而没有具体的实现方法。 EP:abstract void f(); abstract class A{}

含有抽象方法的类叫做抽象类(不必全部都是抽象方法)。

若有新类继承了抽象类,就必须实现其中的抽象方法,否则继承的类仍是抽象类。

到这里我本来还是很明白的,可是紧接着就出现了一个新的关键词--interface。

据书上所说,interface产生一个完全抽象的类,使抽象的概念更进了一步,那么,究竟它和abstract有什么不同呢?

EP: interface A{}

先说几个明显的:

1.子类的实现关键字interface是implements,abstract是extends。

2.abstract的子类可以有选择的实现父类当中的抽象方法。

3.abstract直接继承只能有一个父类,而interface可以同时implements多个。

4.interface只能包含public、static、final类型的成员变量。

5.abstract当中可以存在有实现细节的成员方法。

从本质上来看,interface更多的是一种行为规范,他重点关注实现的是什么,interface只需要你遵守了我的“条约”即可(like-a),而abstract是一种设计模板,代表的是一种继承关系(is-a)。

也就是在确定类与类之间的本质上两者不同,若两个类在本质上是相同的,那么用abstract无疑是更好的选择。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: