黑马程序员_抽象类和接口的比较
2012-04-23 12:15
218 查看
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
抽象类和接口的比较
抽象类和接口都是进行面向对象设计时专用的设计结构,在实际进行项目设计时,经常需要考虑的问题就是——“使用抽象类还是接口”?下面通过对于抽象类和接口进行简单的比较,熟悉两者之间的区别和联系,从而在实际设计时使用恰当的结构。
1.什么时候使用抽象类或接口?
当设计中为了规范类中方法声明的结构(即类的行为)时,使用抽象类或接口。也就是强制子
类对外部提供统一的方法声明时,使用抽象类或接口。
2.抽象类和接口的区别(不同点)
a)抽象类是类,而接口是接口。
因为抽象类是一个类,所以类内部可以包含的内容(构造方法、方法和属性等)在抽象类内部
都可以存在,当然抽象类也受到类的单重继承的限制。而接口是接口类型,所以接口内部只
能包含常量属性和抽象方法,但是一个类可以实现多个接口,所以接口不受类的单重继承的
限制。
b)抽象类内部可以包含实体方法,而接口不能包含实体方法
抽象类是一个类,所以在抽象类内部既可以包含抽象方法也可以包含实体方法,而接口内部的每个方法都必须是抽象方法。
c)抽象类可以继承类,而接口不能继承类
抽象类是一个类,所以在设计时可以使抽象类继承其它的类,在已有类的基础上进行设计,但是接口不能继承类。
3.抽象类和接口的联系(相同点)
a)抽象类和接口都可以声明对象,但是都只能使用子类的构造方法进行创建。
b)抽象类和接口内部都可以包含抽象方法。
按照 Java
语言的语法,子类在继承抽象类或实现接口时,都必须覆盖这些抽象方
法,否则必须声明为抽象类。
c)抽象类和接口都可以代表一种类型,从而可以统一子类对象的类型,获得良好的可扩展性。
4. 什么时候使用抽象类?
当满足以下的条件时,最好使用抽象类进行设计:
a)子类不继承其它父类
b)子类中存在完全相同的功能实现的方法
c)子类中存在相同的属性
d)设计出的结构需要继承其它类
当需要满足 d
条件时,只能使用抽象类,否则也可以考虑使用接口实现。
5. 什么时候使用接口?
当满足以下的条件时,最好使用接口进行设计:
a)子类已经继承了其它父类
b)子类中不存在完全相同的功能实现方法
c)子类中不存在相同的属性
d)设计出的结构不需要继承其它类
当需要满足 a
条件时,只能使用接口,否则也可以考虑使用抽象类实现。
6.抽象类和接口的其它用途
a)禁止创建该类的对象时,可以把该类声明为抽象类。
b)当需要存储大量的常量数据,而这些常量数据将会在项目中的多个类之间使用时,可以使
用接口。
c)当需要统一具有某种功能的类的对象时,可以使用接口。例如 Serializable
接口。另外,需要说明的是,不是每个项目中都必须使用抽象类或接口的。
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
抽象类和接口的比较
抽象类和接口都是进行面向对象设计时专用的设计结构,在实际进行项目设计时,经常需要考虑的问题就是——“使用抽象类还是接口”?下面通过对于抽象类和接口进行简单的比较,熟悉两者之间的区别和联系,从而在实际设计时使用恰当的结构。
1.什么时候使用抽象类或接口?
当设计中为了规范类中方法声明的结构(即类的行为)时,使用抽象类或接口。也就是强制子
类对外部提供统一的方法声明时,使用抽象类或接口。
2.抽象类和接口的区别(不同点)
a)抽象类是类,而接口是接口。
因为抽象类是一个类,所以类内部可以包含的内容(构造方法、方法和属性等)在抽象类内部
都可以存在,当然抽象类也受到类的单重继承的限制。而接口是接口类型,所以接口内部只
能包含常量属性和抽象方法,但是一个类可以实现多个接口,所以接口不受类的单重继承的
限制。
b)抽象类内部可以包含实体方法,而接口不能包含实体方法
抽象类是一个类,所以在抽象类内部既可以包含抽象方法也可以包含实体方法,而接口内部的每个方法都必须是抽象方法。
c)抽象类可以继承类,而接口不能继承类
抽象类是一个类,所以在设计时可以使抽象类继承其它的类,在已有类的基础上进行设计,但是接口不能继承类。
3.抽象类和接口的联系(相同点)
a)抽象类和接口都可以声明对象,但是都只能使用子类的构造方法进行创建。
b)抽象类和接口内部都可以包含抽象方法。
按照 Java
语言的语法,子类在继承抽象类或实现接口时,都必须覆盖这些抽象方
法,否则必须声明为抽象类。
c)抽象类和接口都可以代表一种类型,从而可以统一子类对象的类型,获得良好的可扩展性。
4. 什么时候使用抽象类?
当满足以下的条件时,最好使用抽象类进行设计:
a)子类不继承其它父类
b)子类中存在完全相同的功能实现的方法
c)子类中存在相同的属性
d)设计出的结构需要继承其它类
当需要满足 d
条件时,只能使用抽象类,否则也可以考虑使用接口实现。
5. 什么时候使用接口?
当满足以下的条件时,最好使用接口进行设计:
a)子类已经继承了其它父类
b)子类中不存在完全相同的功能实现方法
c)子类中不存在相同的属性
d)设计出的结构不需要继承其它类
当需要满足 a
条件时,只能使用接口,否则也可以考虑使用抽象类实现。
6.抽象类和接口的其它用途
a)禁止创建该类的对象时,可以把该类声明为抽象类。
b)当需要存储大量的常量数据,而这些常量数据将会在项目中的多个类之间使用时,可以使
用接口。
c)当需要统一具有某种功能的类的对象时,可以使用接口。例如 Serializable
接口。另外,需要说明的是,不是每个项目中都必须使用抽象类或接口的。
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
相关文章推荐
- 黑马程序员_面向对象二(继承,多态,抽象类abstract,接口Interface,内部类)
- 黑马程序员- 动态代理 ,接口 ,抽象类
- 黑马程序员——final 修饰符,抽象类,接口,内部类---
- 黑马程序员--浅谈我对C#中抽象类与接口的理解
- 黑马程序员_day07 面向对象(继承,抽象类,接口)
- 黑马程序员——继承的深入学习:抽象类与接口(上)
- 黑马程序员--继承、抽象类、接口
- 黑马程序员:C#基础篇(四)抽象类、接口、继承与多态
- 黑马程序员------- 抽象类和接口-------
- 抽象类和接口的比较
- 比较C#中抽象类(abstract class)和接口(interface)的异同
- 黑马程序员_抽象类与接口
- 黑马程序员—Java基础(接口,类,抽象类综合小练习)
- 黑马程序员-c#接口和抽象类的区别(非常经典的解说)
- 黑马程序员——Java练习笔记——抽象类和接口
- 黑马程序员--Java基础--抽象类和接口
- 黑马程序员——Java面向对象(三)—抽象类、接口
- 黑马程序员——面向对象(抽象类、接口、内部类)
- 抽象类与接口的比较(Java)
- Java C++ 比较 – 虚函数、抽象函数、抽象类、接口