個人對繼承理解
阿新 • • 發佈:2019-02-13
繼承的好處:
1.提高了程式碼的複用性。
2.讓類與類之間產生了關係,給多型提供了前提。
java中支援單繼承。 不直接支援多繼承,但對C++中的多繼承機制進行改良。
單繼承:一個子類只能有一個直接父類。
多繼承:一個子類可以有多個直接父類(java中不允許,進行改良)。
不直接支援,是因為多個父類中有相同成員,會產生呼叫的不確定性。
在java中是通過“多實現”的方式來體現。
例子:class A{} class B{} class C extends A,B{}(多繼承)
java支援多層(多重)繼承。
例:C繼承B,B繼承A。
就會出現繼承體系。
當使用一個繼承體系時,
1.檢視該體系中的頂層類,瞭解該體系的基本功能。
2.建立體系中的最子類物件,完成功能的使用。
什麼時候定義繼承呢?
當類與類之間存在著所屬關係的時候,就定義繼承。 若xx是YY的一種,xxxenxtendsYY
成員變數:
當本類的成員和區域性變數同名用this區分
當子父類中的成員變數同名用super區分父類。
this和super的用法很相似。
this:代表一個本類物件的引用。
super:代表一個父類空間。
子類不能直接訪問父類中私有內容;若要訪問例如下:
class A
{
private int num = 4;
public int getNum(){
return num;
}
}
class B
{
private int num = 5;
void show(){
System.out.println(this.num+"......"+super.getNum());
}
}
成員函式:
當子父類中出現成員函式一模一樣的情況,會執行子類的函式
這種現象,稱為覆蓋操作。這是函式在子父類中的特性。
函式兩個屬性:
1.過載。同一個類中。overload
2.覆蓋。子類中,覆蓋也稱為重寫,複寫。override
覆蓋注意事項:
1.子類方法覆蓋父類方法時,子類許可權必須要大於等於父類的許可權。(三種許可權,1private 2public 3預設 public大於預設許可權)
2.靜態只能覆蓋靜態,或被靜態覆蓋。
什麼時候使用覆蓋操作?
當對一個類進行子類的擴充套件時,子類需要保留父類的功能宣告。
但是要定義子類中該功能的特有內容時,就使用覆蓋操作完成。
1.提高了程式碼的複用性。
2.讓類與類之間產生了關係,給多型提供了前提。
java中支援單繼承。 不直接支援多繼承,但對C++中的多繼承機制進行改良。
單繼承:一個子類只能有一個直接父類。
多繼承:一個子類可以有多個直接父類(java中不允許,進行改良)。
不直接支援,是因為多個父類中有相同成員,會產生呼叫的不確定性。
在java中是通過“多實現”的方式來體現。
例子:class A{} class B{} class C extends A,B{}(多繼承)
java支援多層(多重)繼承。
例:C繼承B,B繼承A。
就會出現繼承體系。
當使用一個繼承體系時,
1.檢視該體系中的頂層類,瞭解該體系的基本功能。
2.建立體系中的最子類物件,完成功能的使用。
什麼時候定義繼承呢?
當類與類之間存在著所屬關係的時候,就定義繼承。 若xx是YY的一種,xxxenxtendsYY
成員變數:
當本類的成員和區域性變數同名用this區分
當子父類中的成員變數同名用super區分父類。
this和super的用法很相似。
this:代表一個本類物件的引用。
super:代表一個父類空間。
子類不能直接訪問父類中私有內容;若要訪問例如下:
class A
{
private int num = 4;
public int getNum(){
return num;
}
}
class B
{
private int num = 5;
void show(){
System.out.println(this.num+"......"+super.getNum());
}
}
成員函式:
當子父類中出現成員函式一模一樣的情況,會執行子類的函式
這種現象,稱為覆蓋操作。這是函式在子父類中的特性。
函式兩個屬性:
1.過載。同一個類中。overload
2.覆蓋。子類中,覆蓋也稱為重寫,複寫。override
覆蓋注意事項:
1.子類方法覆蓋父類方法時,子類許可權必須要大於等於父類的許可權。(三種許可權,1private 2public 3預設 public大於預設許可權)
2.靜態只能覆蓋靜態,或被靜態覆蓋。
什麼時候使用覆蓋操作?
當對一個類進行子類的擴充套件時,子類需要保留父類的功能宣告。
但是要定義子類中該功能的特有內容時,就使用覆蓋操作完成。