物件的多型性
class 動物
{}class 貓 extends 動物
{}class 狗 extends 動物
{}貓 x = new 貓();
//意思是建立本類的物件 new 貓(),並通過本類的引用指向本類的物件。
動物 x = new 貓();//所以也可以這樣寫 乙個物件兩種形態.
//上面的**表示,用貓型別建立物件,用動物型別指向.
//它的表現就是 父型別的指向子物件
//這就是多種形態.
貓這類事物即具備著貓的形態,又具備著動物的形態。
這就是物件的多型性。
簡單說:就是乙個物件對應著不同型別。
多型在**中的體現:
父類或者介面的引用指向其子類的物件。
abstract class animal
class dog extends animal
void lookhone() }
class cat extends animal
void catchmouse() }
class pig extends animal
void gongdi() }
class duotaidemo
}
public static void method(pig p)
public static void method(cat c)
public static void method(dog d)
每加乙個動物,就要再寫乙個函式,這樣很麻煩.
不如我直接讓"動物們去吃飯"就可以了
public static void method(animal a)
//這樣就行了.省了很多的**
這就是多型的簡單使用。
多型的好處:
提高了**的擴充套件性,前期定義的**可以使用後期的內容.
多型的弊端:
前期定義的內容不能使用(呼叫)後期子類的特有內容.
多型的前提:
1. 必須有關係:繼承,實現
2. 要有覆蓋.
型別判斷
public static void method(animal a)
else if (a instanceof dog)
}
成員變數
多型時:
成員的特點:
1. 成員變數.
編譯時:參考引用型變數所屬的類中的是否有呼叫的成員變數,有,編譯通過,沒有,編譯失敗.
執行時:參考引用型變數所屬的類中的是否有呼叫的成員變數,並執行該所屬型別中的成員變數
簡單說:編譯和執行都參考等號的左邊.
2. 成員函式(非靜態):
編譯時:參考引用型別變數所屬的類中的是否有呼叫的函式,有,編譯通過.
執行時:參考物件所屬的類中是否呼叫的函式.
簡單說:編譯看左邊,執行看右邊.
3. 靜態函式:
編譯時:參考引用型變數所屬的類中的是否有呼叫的靜態方法.
執行時:參考引用型變數所屬的類中的是否有呼叫的靜態方法.
簡單說,編譯和執行都看左邊.
其實對於靜態方法,是不需要物件的,直接用類名呼叫即可。
個人SVN備忘錄
專案目錄 home efuyi 裡面存放php檔案 網頁內容,nginx指向的的目錄 測試專案目錄 home efuyi temp 網頁內容,nginx指向的的目錄,測試時用 home logs nginx等錯誤日誌 home 基本目錄 root www home ls backup conf ef...
java 備忘錄模式
package memento 備忘錄 用於存放狀態的類 author administrator public class memento public string getstate public void setstate string state package memento 儲存和讀取備...
Java學習個人備忘錄之關鍵字final
final關鍵字 final可以修飾類,方法,變數。final修飾的類不可以被繼承 final修飾的方法不可以被覆蓋 final修飾的變數是乙個常量。只能被賦值一次。內部類只能訪問被final修飾的區域性變數。class fu class zi extends fu 從上面可以看出繼承是有弊端的,就...