面向对象中接口和抽象类的区别
2017-03-07 14:36
288 查看
有以下几点
1、抽象类和接口都不能直接实例化。如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。
2、抽象类要被子类继承,接口要被类实现。
3、接口只能做方法申明,抽象类中可以做方法申明,也可以做方法的默认实现。
4、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。
5、抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类仍然是抽象类。同样,一个类实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。
6、抽象类里可以没有抽象方法
7、如果一个类里有抽象方法,那么这个类只能是抽象类
8、抽象方法要被实现,所以不能是静态的,也不能是私有的。
9、接口可继承接口,并可多继承接口,但类只能单继承【注:此处是指java语法中。在C++中可以多继承】。
10、有抽象方法的类叫做抽象类,抽象类中不一定有抽象方法,抽象方法必须使用abstract关键字定义。
11、接口中全部是抽象方法,方法不用使用abstract定义。
特别是对于公用的实现代码,抽象类有它的优点。抽象类能够保证实现的层次关系,避免代码重复。然而,即使在使用抽象类的场合,也不要忽视通过接口定义行为模型的原则。从实践的角度来看,如果依赖于抽象类来定义行为,往往导致过于复杂的继承关系,而通过接口定义行为能 够更有效地分离行为与实现,为代码的维护和修改带来方便。
1、抽象类和接口都不能直接实例化。如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。
2、抽象类要被子类继承,接口要被类实现。
3、接口只能做方法申明,抽象类中可以做方法申明,也可以做方法的默认实现。
4、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。
5、抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类仍然是抽象类。同样,一个类实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。
6、抽象类里可以没有抽象方法
7、如果一个类里有抽象方法,那么这个类只能是抽象类
8、抽象方法要被实现,所以不能是静态的,也不能是私有的。
9、接口可继承接口,并可多继承接口,但类只能单继承【注:此处是指java语法中。在C++中可以多继承】。
10、有抽象方法的类叫做抽象类,抽象类中不一定有抽象方法,抽象方法必须使用abstract关键字定义。
11、接口中全部是抽象方法,方法不用使用abstract定义。
特别是对于公用的实现代码,抽象类有它的优点。抽象类能够保证实现的层次关系,避免代码重复。然而,即使在使用抽象类的场合,也不要忽视通过接口定义行为模型的原则。从实践的角度来看,如果依赖于抽象类来定义行为,往往导致过于复杂的继承关系,而通过接口定义行为能 够更有效地分离行为与实现,为代码的维护和修改带来方便。
相关文章推荐
- JAVA面向对象,重写 重载的区别, 抽象类, 接口,final
- 面向对象机制之抽象类和接口联系与区别
- c#接口和抽象类的区别 ---- 面向对象概念
- 面向对象多态的实现(抽象类Abstract和接口Interface的用法区别)
- 面向对象设计中抽象类与接口的区别
- 面向对象中接口和抽象类的区别
- 黑马程序员_面向对象二(继承,多态,抽象类abstract,接口Interface,内部类)
- java面向对象之接口与抽象类
- C#基础系列(9)-- 第三部分 面向对象相关 -- 抽象类与接口(2)
- Java学习系列(五)Java面向对象之抽象类、接口、内部类、枚举类详解
- 一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处
- 体现JAVA中的面向对象思想,接口(抽象类)的用处 :饲养员给动物喂食物
- php面向对象中抽象类与接口的使用:
- 面向对象基础(2)--抽象类 接口 集合 泛型
- 面向对象基础之抽象类与接口 上
- Java学习系列(五)Java面向对象之抽象类、接口、内部类、枚举类详解
- 面向对象高级续1(抽象类、接口的概念、对象的多态性)
- 黑马程序员--03.Java面向对象--06.【final关键字】【抽象类】【接口】
- 面向对象基础指数(7)抽象类 接口
- 面向对象(二)—抽象思维中的抽象类,接口