接口和抽象类
来源:互联网 发布:计算机编程课程 编辑:程序博客网 时间:2024/05/21 06:57
之前一直太懒,什么都没有留下。后来,今天中午和阿里的一位大牛聊天时,大彻大悟,嘿嘿。以后会坚持我的博客之路。这里的Java部分,我不打算从基础写起,而主要是对我的一些疑惑的地方进行记载。如果有不对的地方,望大家批评指正,共同进步。
接口和抽象类一直困扰我开发的一个问题,今天我在此纪录下我的认知,如果有不对的地方,希望大神们留下脚步,给出您的回复,谢谢!
下面我们将对接口和抽象类分别进行讲解:
抽象类
规则:
1.抽象类必须使用abstract修饰符来修饰;
2.抽象类不可以被实例化,即无法通过new关键字来创建某个抽象类的实例(即使某个抽象类不包含任何抽象方法,该抽象类也不可实例化)。
3. 抽象类主要用于被其子类调用,可以包含成员变量、方法(抽象或者非抽象)、构造器、内部类、初始化块。
4.含有抽象方法的类只能被定义为抽象类。
作用:
抽象类一般被当作父类来被继承,具有较高的抽象层次。
1.由于抽象类一般作为多个子类的通用模板,避免了子类设计的随意性。
2.抽象父类只需定义需要使用的某些方法,不必具体实现。
接口
定义:
通过上面抽象类的描述可知,抽象类是指从多个类中抽象出来的模板,而接口可以理解为一种更为特殊,更为彻底的抽象类。
规则:
1.接口里不能包含普通方法,接口里的所有方法必须都是抽象方法。(java 8之前)
2.java 8 对接口进行了改进,允许在接口中定义默认方法。
3.接口里的成员只能是静态变量。
作用:
1.定义变量,强制转换
2.调用接口中定义的常量
3.被其他类实现。
二者对比:
相似:
1.接口和抽象类都不能被实例化。
2.接口和抽象类都可以包含抽象方法,实现接口或抽象类的子类都必须实现这些方法。
差别:
1.接口里只能包含抽象方法和默认方法,不能包含普通方法;抽象类则可以包含普通方法。
2.接口里不能定义静态方法;抽象类可以。
3.接口里只能定义静态常量,不能定义普通成员变量;抽象类则都可以。
4.接口里不能包含构造器;抽象类可以,用于初始化操作。
5.接口不能包含初始化块;抽象类可以。
6.一个类只能有一个抽象类;但是一个类可以实现多个接口,从而弥补java单继承的缺陷。
- 抽象接口和抽象类
- 接口和抽象类
- 接口和抽象类
- 接口和抽象类
- 抽象类和接口
- 抽象类和接口
- 抽象类和接口
- 接口和抽象类
- 抽象类和接口
- 抽象类和接口
- 接口和抽象类
- 抽象类和接口
- 抽象类和接口
- 抽象类和接口
- 抽象类和接口
- 接口和抽象类
- 抽象类和接口
- 接口和抽象类
- 链表的经典技巧及算法
- centOS 源的更新
- C++多线程编程入门(转)
- Javascript:谈谈JS的全局变量跟局部变量
- SolrCloud功能和架构 SolrCloud Features and Architecture
- 接口和抽象类
- Undefined symbols for architecture x86_64/armv7 解决方法
- 放弃一切
- DOM
- 重新封装BaseAdapter,打造最简洁框架
- linux 链接库文件出现“undefined reference to" 问题的解决方法
- RTSP 交互示例
- 婚外情网站的谎言和资料外泄故事!企业该吸取怎样的教训?
- ssh使用整理