interface与abstract类的区别

以下内容整理自互联网,仅用于个人学习


继承

abstract使用的是extends关键字,表示一种继承关系,所以只能单继承。
interface使用的是implements关键字,一个类可以实现多个interface。

成员变量

在抽象类中可以有自己的数据成员,也可以有非abstarct的方法。
而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在interface中一般不定义数据成员),所有的方法都是public abstract的。

抽象方法

实现抽象类和接口的类必须实现其中的所有抽象方法。抽象类中可以有非抽象方法,而接口中所有方法为抽象方法。

访问权限

抽象类中的变量默认是friendly型,其值可以在子类中重新定义,也可以重新赋值。
接口中定义的变量默认是public static final型,且必须给其赋初值,所以实现类中不能重新定义,也不能改变其值。

你可能感兴趣的:(interface与abstract类的区别)