Java编程那些事儿70——抽象类和接口(三)
副标题#e#
8.9.3 抽象类和接口的较量
抽象类和接口都是举办面向工具设计时专用的设计布局,在实际举办项目设计时,常常需要思量的问题就是——“利用抽象类照旧接口”?下面通过对付抽象类和接口举办简朴的较量,熟悉两者之间的区别和接洽,从而在实际设计时利用得当的布局。
1.什么时候利用抽象类或接口?
当设计中为了类型类中要领声明的布局(即类的行为)时,利用抽象类或接口。也就是强制子类对外部提供统一的要领声明时,利用抽象类或接口。
2.抽象类和接口的区别(差异点)
a)抽象类是类,而接口是接口。
因为抽象类是一个类,所以类内部可以包括的内容(结构要领、要领和属性等)在抽象类内部都可以存在,虽然抽象类也受到类的单重担任的限制。而接口是接口范例,所以接口内部只能包括常量属性和抽象要领,可是一个类可以实现多个接口,所以接口不受类的单重担任的限制。
b)抽象类内部可以包括实体要领,而接口不能
抽象类是一个类,所以在抽象类内部既可以包括抽象要领也可以包括实体要领,而接口内部的每个要领都必需是抽象要领。
c)抽象类可以担任类,而接口不能
抽象类是一个类,所以在设计时可以使抽象类担任其它的类,在已有类的基本长举办设计,可是接口不能担任类。
3.抽象类和接口的接洽(沟通点)
a)抽象类和接口都可以声明工具,可是都只能利用子类的结构要领举办建设。
b)抽象类和接口内部都可以包括抽象要领。
凭据Java语言的语法,子类在担任抽象类或实现接口时,都必需包围这些抽象要领,不然必需声明为抽象类。
c)抽象类和接口都可以代表一种范例,从而可以统一子类工具的范例,得到精采的可扩展性。
4.什么时候利用抽象类?
当满意以下的条件时,最好利用抽象类举办设计:
a)子类不担任其它父类
b)子类中存在完全沟通的成果实现的要领
c)子类中存在沟通的属性
d)设计出的布局需要担任其它类
当需要满意d条件时,只能利用抽象类,不然也可以思量利用接话柄现。
#p#副标题#e#
5.什么时候利用接口?
当满意以下的条件时,最好利用接口举办设计:
a)子类已经担任了其它父类
b)子类中不存在完全沟通的成果实现要领
c)子类中不存在沟通的属性
d)设计出的布局不需要担任其它类
当需要满意a条件时,只能利用接口,不然也可以思量利用抽象类实现。
6.抽象类和接口的其它用途
a)克制建设该类的工具时,可以把该类声明为抽象类。
b)当需要存储大量的常量数据,而这些常量数据将会在项目中的多个类之间利用时,可以利用接口。
c)当需要统一具有某种成果的类的工具时,可以利用接口。譬喻Serializable接口。
虽然,只有颠末大量的系统设计练习今后,才可以越发深刻的领略抽象类和接口的区别和接洽,从而越发自如的举办选择。
别的,需要说明的是,不是每个项目中都必需利用抽象类或接口的。