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无疑是更好的选择。
仅有声明,而没有具体的实现方法。 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无疑是更好的选择。
相关文章推荐
- 关于Vue.js一些问题和思考学习笔记(2)
- java学习笔记(1)-----关于interface
- java 基础知识学习 关于abstract interface final
- Java 学习笔记 (3) -抽象类 abstract 接口 interface 内部类 inner class 继承 extends 实现 implements 包 package
- Java学习笔记四-abstract和interface
- 关于JAVA学习的一些思考 ——记于2016.4.24午四时
- java个人学习笔记11(abstract+interface)
- L的java学习笔记——关于运算符和循环的一些重点
- 关于 "java中常量定义在interface中好还是定义在class中好" 的一些思考
- [JAVA][学习笔记]关于java.util.concurrent中 Future类的一些验证
- java学习笔记,关于java的一些基础知识,适用于初学者,第一节
- 关于Vue.js一些问题和思考学习笔记(1)
- 关于近期学习java se篇的小结及一些学习路线的思考
- java学习笔记-抽象类abstract与接口interface
- Java学习笔记-关于默认类型或访问权限的总结
- [转]一些关于web标准的思考笔记
- 一些关于Java面向对象学习、培训机构培训、大学生活状态的感悟和总结
- 关于一些现成加密算法的学习笔记
- 关于大学生学习与毕业的一些思考
- 关于学习或职业方向的一些思考