java抽象类和接口

Java接口和Java抽象类的存在就是为了用于具体类的实现和继承的,如果你准备写一个具体类去继承另一个具体类的话,那你的设计就有很大问题了。
不同:
1.抽象类和接口都可以定义对象属性,但是接口中只能存在静态的不可变的成员数据(不过一般都不在接口中定义成员数据);
2.抽象类中可以包含非抽象方法,接口只能包含抽象方法;可以说接口是一种特殊的抽象类,有更多的限制;抽象类可以实现接口,但不用实现其中抽象方法,只是抽象方法的映射,其方法实现需要在子类中完成;
3.抽象类描述的是is-a的关系,表明对象是什么,接口描述的是like-a的关系,表明对象有什么功能。因此,只能继承一个抽象类,但是可以实现多个接口。一般接口用于定义比较普遍的方法,而抽象类主要用于比较具体的方法。
4.有个通用的设计思想,如果要设计小而简练的功能块,则使用接口。如果要设计大的功能单元,则使用抽象类。
好处:
1.规范性(强制性)
抽象类和接口的意思,就是规范,大家都遵守,是抽象的不能够被实例化。这样符合规范的东西,大家都不用了解各自的细节。插座不会了解插销怎么做的。插销也不必了解插座怎么做的。同时,也必须完成相同的功能,实现其中的抽象方法,代码更加规范;
2.复用性(多态)
抽象类和接口是java语言中两种不同的抽象概念,他们的存在对多态提供了非常好的支持。
用抽象的型别统一类型,来进行操作,有利于以后的扩展,移植,复用!!!抽象类一个好处就是通过方法的覆盖来实现多态的属性。也就是运行期绑定,抽象类将事物的共性的东西提取出来,抽象成一个高层的类。子类由其继承时,也拥有了这个超类的属性和方法实现代码的复用。
接口设计原则:
接口具有良好可扩展性。有了跑和飞的两个借口,你可以轻松的做出飞猪,飞驴等具有类似功能的对象。
接口中不得实现任何方法。一个类一旦要实现一个接口,则必须实现改接口的所有方法,即使在该方法中不执行任何操作(即方法体内为空)。
接口一旦被定义和接受,就必须保持不变,以保护为使用该接口而编写的应用程序。接口发布后,就不能对其进行更改。这是我们进行组件设计的一个重要原则,叫接口不变性。
创建一个接口就是在创建一个定义,接口定义发布后则永远不能更改。接口不变性,就是为了保护为使用接口而编写的现有系统。当接口设计与需求有所出入,确认需要大幅度变更时,我们应该创建新的接口。一般命名方式是,新接口可以通过在原来的接口名称后追加一个数字‘2’来命名,以显示出它与现有接口的关系。然后通过接口继承来创建新接口。
面向对象设计中的一个核心原则ISP(Interface Segregation Priciple)接口分割原则,不能强迫用戶去依賴那些他们不需要的接口;换句话说,使用多个专门的接口比使用单一的总接口总要好。
综上所述,接口和抽象类各有优缺点,在接口和抽象类的选择上,必须遵守这样一个原则:
行为模型应该总是通过接口而不是抽象类定义。所以通常是:优先选用接口,尽量少用抽象类。
选择抽象类的时候通常是如下情况:需要定义子类的行为,又要为子类提供共性的功能。
http://www.xl7788.com/zt/computerprogram/JavaInterface.html
http://blog.csdn.net/kingchaool/article/details/6223434


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值