java中有两种特殊的类,它们都代表抽象,不能实例化,因此常常让人傻傻分不清,它们就是interface与abstract class。
abstract class是指类中包含了抽象方法的类,abstract class的派生类实现了其中所有的抽象方法,就变成了普通的可以实例化的类,否则仍然是abstract class。
interface则抽象程度更高,所有的方法都是抽象的。interface可以被继承,但继承的类也是interface。interface可以被实现,但实现的类必须把interface中所有的接口都实现。

语法上的区别

abstract class本质上还是个类,具有类的特征,而interface本质上是个接口。
结合普通的class来对比它们之间的差别

class abstract class interface
翻译 类 抽象类 接口
普通成员变量 可以有 可以有 无
静态成员变量 可以有 可以有 必须是public static final
普通成员方法 可以有 可以有 无
抽象成员方法 无 可以有,public或protected 必须全部是抽象方法,public abstract
静态方法 可以有 可以有 无
构造函数 不能是抽象的或者静态的 不能是抽象的或者静态的 无
派生类 class class或者abstract class interface
实现类 不能被实现 不能被实现 能,但需要实现其中全部的接口

用法上的区别

extends与implement

abstract class被用来extends,interface主要用来implement,因此它们之间的区别类似于extends与implement之间的区别。
interface可以被extends,用于扩展接口。

产生常量群

interface中的变量默认为public static final,可以把一类常量放到一起管理,例如:

public interface Months{
    int JANURAUY = 1;
    int FEBRUARY = 2;                   
    int MARCH =3;
}

使用的时候import Months.JANURAUY

results matching ""

    No results matching ""