Java技术——Interface与abstract类的区别

0. 前言  

抽象类与接口Java语言中对抽象概念进行定义的两种机制,正是由于他们的存在对多态提供了非常好的支持。他们两者有很大的相似,甚至可以互换,但是也有区别。对于他们的选择反应了你对该问题的理解。

本文原创,转载请注明出处:Java技术——Interface与abstract类的区别_SEU_Calvin的博客-CSDN博客

 

1. 两者关系总结  

1抽象类和接口都不能够实例化。一个类如果继承了某个抽象类可以选择不对抽象方法全部实现(仍为抽象类),但是实现接口的必须要实现该接口的所有方法。

2抽象类的出发点就是为了继承,只能继承一个父类。但是接口不同,一个类可以同时实现多个接口

3抽象类中可以包含成员变量、抽象方法、具体方法、构造方法等;(抽象类中不一定必须有抽象方法,而有抽象方法一定是抽象类。)

而接口中只能存在成员变量和抽象方法。这些成员变量都会自动变为public static final,即静态的不可变的成员数据(但是一般都不在接口中定义成员数据)。

这里有个小问题,为什么接口的成员变量都会自动变为为public static final

这是因为接口不可实例化,它的所有元素都不必是对象层面的,显然static 满足了这一点。

而且如果接口的变量能被修改,那么一旦一个子类实现了这个接口,并修改了接口中的没有被final修饰的变量,而该子类的子类再次修改这个变量的时候,造成的结果就是虽然实现了相同的接口,但接口中的变量值是不一样的,显然final满足了这一点。

 

4抽象类是对类抽象,是面向整个类的自下而上的设计理念,一般是先有各种子类,再有把这些有关系的子类加以抽象为父类的需求。

而接口是对行为的抽象,是面向行为的自上而下的设计理念,接口根本就不需要知道子类的存在,只需要定义一个规则即可。

2. 结束语   

通过以上从实现程度、一继承多接口、内部成员结构、以及设计理念四个角度对接口和抽象类的区别进行理解之后,便可以在选择使用接口或者抽象类时做出更加合理的设计。转载请注明出处:Java技术——Interface与abstract类的区别_SEU_Calvin的博客-CSDN博客

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值