Luoml's blog

java抽象类和接口

抽象类 Abstract Class

1
2
3
4
5
6
7
8
abstract class 类名 {
// 抽象方法(必须为public abstract 或protected abstract)
// 具体方法
}

class 类名 extends 抽象类 {
// 抽象方法的具体实现
}

接口 Interface

1
2
3
4
5
6
7
8
interface 接口名 {
// [public] [static] [final] 变量名;
// [public] [abstract] 方法名;
}

class 类名 implements 接口1[, 接口2, ...] {

}

  • 抽象类是对类的抽象,而接口是对行为的抽象。
  • 抽象类是自底向上抽象而来的,而接口是自顶向下设计出来的。
  • 抽象类,抽象出共同的本质特殊,单一继承,is-a关系;接口,个性化特征,多重实现,like-a关系。
  • 抽象类可以有非abstract的成员方法;而接口所有成员方法默认为public abstract。
  • 抽象类中的变量默认为friendly;而接口中定义的变量默认public static final,且必须初始化。

Fork me on GitHub