天天看點

Java聲明定義抽象類_接口_繼承_實作聲明定義抽象類聲明定義接口派生類、抽象類、接口的繼承要點

文章目錄

  • 聲明定義抽象類
  • 聲明定義接口
  • 派生類、抽象類、接口的繼承要點

聲明定義抽象類

public abstract class CRMSystem {
	public abstract Client add(Client newGuy); //添加使用者方法
	public abstract Event add(Event e, Client guy); //重載添加事件、使用者方法
	public abstract Event[] todayEvents(); //今日事件方法
}
           

說明:

1.抽象類有構造器

2.接口和抽象類不能執行個體化

3.抽象方法所在的類必須是抽象類(接口是純抽象類)

4.變量不存在抽象的概念

5.抽象類可以隻有抽象方法,沒具體方法

6.抽象類可以隻有具體方法,沒有抽象類,這樣設計的目的就是不讓調用者建立該類的執行個體對象

7.抽象類的類體内容可以為空

8.聲明定義類的時候,類變量或者成員變量可以不要初始化(可以不賦初始值),建立對象的時候會自動初始化

9.方法内聲明的變量則必須初始化,否則會報編譯錯誤

10.抽象類中的抽象方法的通路權限修飾符可以是

public

protected

default

,但是不可以是

private

。若沒有指明通路權限修飾符,預設是

default

聲明定義接口

public interface CRMSystem {
	Client add(Client newGuy);
	Event add(Event e, Client guy);
	Event[] todayEvents();

	// 預設方法,用來更新接口
	public default void myMethodDefault() {
	...
	}
}
           

說明:

1.接口中的變量,預設

public static final

,其實就是常量,而且必須指派

2.接中的方法一定是

public abstract

的(預設,可以不寫)

3.如果是 Java 8,還可以額外包含預設方法和靜态方法

public default 傳回值類型 方法名(參數清單) {方法體} // 預設方法,必須是public,預設是public
public static 傳回值類型 方法名(參數清單) {方法體} // 靜态方法,不可以是protected,預設是public
           

4.如果是 Java 9,還可以包含私用方法

private 傳回值類型 方法名(參數清單) {方法體} // 私有的普通方法
private static 傳回值類型 方法名(參數清單) {方法體} // 私有的靜态方法
           

5.不能通過實作類對象調用接口的靜态方法,特别注意了

6.接口不可以有靜态代碼塊和構造器

7.接口體的内容可以為空

派生類、抽象類、接口的繼承要點

1.一個類(不論是具體類還是抽象類)隻能繼承自一個類(不論是具體類還是抽象類),不可以同時繼承自多個類,換句話說一個類的直接父類隻能有一個,這叫單繼承

2.一個類可以多級繼承,例如,A 繼承自 B,B 繼承自 C

3.一個類可以同時實作多個接口

4.一個父類可以有多個子類,即不同的類可以繼承自同一個父類

5.接口可以繼承自(extends)另外一個接口,也可以同時繼承自多個接口

6.實作類如果繼承自(extends)一個抽象類,則必須實作抽象類中的全部抽象方法

7.實作類如果實作自(implements)一個接口,則必須實作接口中的全部抽象方法

8.如果聲明的是抽象類,繼承自(extends)一個抽象類,則可以實作部分的抽象方法,甚至都不實作也行

9. 如果聲明的是抽象類,實作自(implements)一個接口,則可以實作部分的抽象方法,且必須至少實作一個抽象方法;也可以全部實作,如果全部實作就必須自己聲明至少一個抽象方法才行

10.實作(implements)也是一種特殊的繼承關系

11.父類,又叫基類、超類;子類,又叫派生類

12.實作抽象方法,也可以了解為重寫(Override)方法

13.子類的成員方法無法直接通路父類的私域(private field)

14.一個實作類同時實作多個接口時,如果不同接口含有相同方法簽名的預設方法,實作類必須重寫沖突的預設方法

15.一個實作類同時實作多個接口時,如果不同接口含有相同方法簽名的抽象方法,實作類隻要實作其中一個抽象方法即可

16.一個實作類的直接父類和接口含有相同方法簽名的方法時,通過實作類對象調此方法,優先使用直接父類的方法

17.子類無法繼承父類的構造器

18.子類無法繼承父類的私有變量和私有方法(實際已經繼承了,隻是不可見而已)

19.子類不能繼承父類的靜态變量和靜态方法

20.子類隻能繼承父類的成員變量和成員方法