Java接口和抽象类的本质区别

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java接口和抽象类的本质区别
1、抽象类特点
1.抽象类不可以被实例化,实例化由子类去完成
2.抽象方法必须由子类重写(非抽象子类,抽象子类可不重写)
3.只要有抽象方法,就是抽象类
4.可以实现具体的方法,也可以不实现
5.abstract 不能与private、static、final或native并列修饰同一个方法
6.可以和普通方法一样有成员变量,常量等。

2、接口特点:
1.interface 是 public 的
2.可以定义常量,会自动被 public static final 修饰
3.java 8 以后可以加 default 关键字实现方法
4.不能使用new操作符实例化一个接口,但可以声明一个接口变量,该变量必须引用(refer to)一个实现该接口的类的对象。

5.可以使用 instanceof 检查一个对象是否实现了某个特定的接口。

例如:if(anObject instanceof Comparable){}
6.在实现多接口的时候一定要避免方法名的重复
3、抽象类和接口的区别
语法层面
抽象类不能被多继承,
接口可以被多实现。

也可以被多继承。

抽象层次
抽象类是对类抽象,而接口是对行为的抽象
跨域不同
抽象类所跨域的是具有相似特点的类,而接口却可以跨域不同的类
抽象类所体现的是一种继承关系,要想使得继承关系合理,父类和派生类之间必须存在"is-a" 关系,即父类和派生类在概念本质上应
该是相同的。

对于接口则不然,并不要求接口的实现者和接口定义在概念本质上是一致的,有点“like-a” 的意思,仅仅是实现了接口定义的契约而已。

设计层次
抽象类是自底向上抽象而来的,接口是自顶向下设计出来的。

相关文档
最新文档