Java编程那些事儿70——抽象类和接口(三)

来源:互联网 发布:网络存储管理 编辑:程序博客网 时间:2024/05/18 03:31

 

8.9.3 抽象类和接口的比较

         抽象类和接口都是进行面向对象设计时专用的设计结构,在实际进行项目设计时,经常需要考虑的问题就是——“使用抽象类还是接口”?下面通过对于抽象类和接口进行简单的比较,熟悉两者之间的区别和联系,从而在实际设计时使用恰当的结构。

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接口。

         当然,只有经过大量的系统设计训练以后,才可以更加深刻的理解抽象类和接口的区别和联系,从而更加自如的进行选择。

         另外,需要说明的是,不是每个项目中都必须使用抽象类或接口的。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 青桔单车忘了锁怎么办 华为手机反应太慢了怎么办 魅族关机键失灵怎么办 oppa79手机开不开机怎么办 黑衣服洗完发白怎么办 白衣服被黑衣服染色了怎么办 评职称单位领导不推荐怎么办 支付宝被限制收款怎么办 在淘宝上下单想写两个地址怎么办 注销了的支付宝怎么办 狗狗黑色毛发红怎么办 蘑菇街直播间被禁言了怎么办 收了发票不付款怎么办 退款要先收发票怎么办 淘宝退款了又收到货怎么办 商家收货后拒绝退款怎么办 申请退货退款卖家不处理怎么办 淘宝买东西换货卖家不发货怎么办 淘宝自动默认付款没发货怎么办 支付宝支付失败可钱扣了怎么办 苹果nfc感应坏了怎么办 老鼠添过的盘子怎么办 ie浏览器页面显示网页错误怎么办 Ⅵvo手机声音小怎么办 小米手机预约错了怎么办 小米note二手没解锁怎么办 艾灸后脸色越黑怎么办 淘宝软件类目不能上架宝贝怎么办 ae中没有mpg格式怎么办 淘宝小二处理不公怎么办 遇到卖保险的人怎么办 租房合同没理家电清单怎么办 普雪油烟机坏了怎么办 我累了 真的累了怎么办 u盘15g变成4g了怎么办 属兔的买了东户怎么办 玩时时彩输了2万怎么办 胸变的又软又小怎么办 u盘16g变成4g了怎么办 1岁宝宝吃了就吐怎么办 脚崴了肿了很痛怎么办