Interface与abstract类的区别
Posted gsqc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Interface与abstract类的区别相关的知识,希望对你有一定的参考价值。
一、从类的继承来说:
- 类可以实现很多个接口,但是只能继承一个抽象类
二、从属性来说:
- Java接口中声明的变量默认都是final的。抽象类可以包含非final的变量。
- 接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。
- 抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。
三、从方法上来说:
- 接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法
- Java接口中的成员函数默认是public的。抽象类的成员函数可以是private,protected或者是public。
注意:
关于抽象类
JDK 1.8以前,抽象类的方法默认访问权限为protected
JDK 1.8时,抽象类的方法默认访问权限变为default
关于接口
JDK 1.8以前,接口中的方法必须是public的
JDK 1.8时,接口中的方法可以是public的,也可以是default的
JDK 1.9时,接口中的方法可以是private的
以上是关于Interface与abstract类的区别的主要内容,如果未能解决你的问题,请参考以下文章
Java抽象类(Abstract Class)与接口(Interface)区别
C#虚方法(Virtual)抽象方法(Abstract),接口(Interface)抽象类的区别