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 ""