抽象类与接口学习笔记
2016-06-23 12:26
148 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qinshuluye2013/article/details/51742494
抽象类与接口的区别
语法层次:
抽象类方式中,抽象类可以拥有任意范围的成员数据,同时也可以拥有自己的非抽象方法,但是接口方式中,它仅能够有静态、不能修改的成员数据(但是我们一般是不会在接口中使用成员数据),同时它所有的方法都必须是抽象的。在某种程度上来说,接口是抽象类的特殊化。
对子类而言,它只能继承一个抽象类(这是java为了数据安全而考虑的),但是却可以实现多个接口。
设计层次
1、 抽象层次不同。抽象类是对类抽象,而接口是对行为的抽象。抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部(行为)进行抽象。
2、 跨域不同。抽象类所跨域的是具有相似特点的类,而接口却可以跨域不同的类。我们知道抽象类是从子类中发现公共部分,然后泛化成抽象类,子类继承该父类即可,但是接口不同。实现它的子类可以不存在任何关系,共同之处。例如猫、狗可以抽象成一个动物类抽象类,具备叫的方法。鸟、飞机可以实现飞Fly接口,具备飞的行为,这里我们总不能将鸟、飞机共用一个父类吧!所以说抽象类所体现的是一种继承关系,要想使得继承关系合理,父类和派生类之间必须存在"is-a" 关系,即父类和派生类在概念本质上应该是相同的。对于接口则不然,并不要求接口的实现者和接口定义在概念本质上是一致的, 仅仅是实现了接口定义的契约而已。
3、 设计层次不同。
语法层次:
抽象类方式中,抽象类可以拥有任意范围的成员数据,同时也可以拥有自己的非抽象方法,但是接口方式中,它仅能够有静态、不能修改的成员数据(但是我们一般是不会在接口中使用成员数据),同时它所有的方法都必须是抽象的。在某种程度上来说,接口是抽象类的特殊化。
对子类而言,它只能继承一个抽象类(这是java为了数据安全而考虑的),但是却可以实现多个接口。
设计层次
1、 抽象层次不同。抽象类是对类抽象,而接口是对行为的抽象。抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部(行为)进行抽象。
2、 跨域不同。抽象类所跨域的是具有相似特点的类,而接口却可以跨域不同的类。我们知道抽象类是从子类中发现公共部分,然后泛化成抽象类,子类继承该父类即可,但是接口不同。实现它的子类可以不存在任何关系,共同之处。例如猫、狗可以抽象成一个动物类抽象类,具备叫的方法。鸟、飞机可以实现飞Fly接口,具备飞的行为,这里我们总不能将鸟、飞机共用一个父类吧!所以说抽象类所体现的是一种继承关系,要想使得继承关系合理,父类和派生类之间必须存在"is-a" 关系,即父类和派生类在概念本质上应该是相同的。对于接口则不然,并不要求接口的实现者和接口定义在概念本质上是一致的, 仅仅是实现了接口定义的契约而已。
3、 设计层次不同。
相关文章推荐
- 黑马程序员之C# 学习笔记:抽象类和接口的区别
- Java学习笔记(六):面向对象、接口和抽象类
- Java学习笔记之接口和抽象类的区别,及选择问题,看完之后就懂了。
- Java学习笔记<1>(抽象类和接口)
- java学习笔记(2):抽象类和接口
- 大龙的学习笔记之“虚方法,抽象方法,重写,抽象类,接口”
- Java学习笔记---抽象类和接口
- Java学习笔记-抽象类和接口的区别
- Bravo!Java学习笔记(1)---接口、抽象类、对象克隆、内部类
- 设计模式学习笔记二:面向对象基础四之抽象类和接口
- 黑马程序员--Java基础学习笔记【抽象类、接口】
- Java学习笔记---15.面向对象编程10-Java中final关键字,抽象类与接口
- php学习笔记--3. 抽象类 与 对象接口
- 学习笔记_毕向东 Java_继承_抽象类_接口_多态 2014.7.13
- C#学习笔记(三):抽象类和接口
- (原创)c#学习笔记09--定义类06--接口和抽象类
- java学习笔记-抽象类abstract与接口interface
- Java基础学习笔记09——(final关键字,多态,抽象类,接口)
- PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
- Java学习笔记;接口与抽象类的区别