抽象類 abstract
在繼承中碰酝,父類(抽象類)定義抽象方法簽名(無(wú)方法體),且子類必須重寫父類的抽象方法
即:父類(抽象類)定義了方法規(guī)范趟济,子類必須執(zhí)行父類(抽象類)定義的方法規(guī)范
在父類(抽象類)中乱投,定義抽象方法簽名 methodName()
abstract class ClassName {
public abstract void methodName();
}
在子類中,必須重寫 methodName() 方法
class ChildrenClassName extends ClassName {
@Override
public void methodName() {
// 重寫的方法體
}
}
特點(diǎn):抽象類無(wú)法被實(shí)例化成對(duì)象顷编,只能用于繼承
接口 interface
- 類實(shí)現(xiàn)接口
接口定義的方法默認(rèn)的都是 public abstract 公共抽象方法戚炫,且接口中不能定義屬性字段
即:接口只是定義了方法規(guī)范,實(shí)現(xiàn)接口的類必須執(zhí)行接口定義的方法規(guī)范
定義接口(方法前的 public abstract 修飾詞默認(rèn)省略)
interface InterfaceName {
void method1();
String method2();
}
定義實(shí)現(xiàn)接口的子類 (使用 implements 關(guān)鍵詞來(lái)實(shí)現(xiàn)接口)
class ClassName implements InterfaceName {
@Override
public void method1() {
// 重寫的方法體
}
@Override
public String method2() {
// 重寫的方法體
}
}
一個(gè)類不可繼承多個(gè)類媳纬,但是可以實(shí)現(xiàn)多個(gè)接口
class ClassName implements InterfaceName1 InterfaceName2 InterfaceName3{}
- default 關(guān)鍵詞双肤,解決接口新增方法必須重寫所有實(shí)現(xiàn)它的子類的問(wèn)題
因?yàn)榻涌诘姆椒ǎJ(rèn)的都是 public abstract 公共抽象類钮惠,所以所有實(shí)現(xiàn)此接口的子類必須重寫此接口的所有方法茅糜,所以 按需重寫很重要
在接口中使用 default 修飾的方法,可以不必重寫
interface InterfaceName {
default void method1();
String method2();
}
- 接口的繼承
和class繼承類似素挽,一個(gè)interface可以通過(guò) extends 關(guān)鍵詞繼承另一個(gè)interface
interface InterfaceName1 {
void method1();
}
interface InterfaceName2 extends InterfaceName1 {
void method2();
}
特點(diǎn):接口無(wú)法被實(shí)例化成對(duì)象