在多態中非靜態成員函數的特點:
在編譯時期:參閱引用類型變量所屬的類中是否有調用的方法.如果有,編譯通過,如果沒有編譯失敗.
在運行時期:參閱對象所屬的類中是否有調用的方法.
簡單的總結就是:成員函數在多態調用時,編譯看左邊,運行看右邊.
在多態中,成員變量的特點:
無論編譯和運行,都參考左邊(引用類型所屬的類).
在多態中,靜態成員函數的特點:
無論編譯和運行,都參考左邊.
class A {
int a = 1;
static int b = 2;
void show() {
System.out.println("A的show");
}
}
class B extends A {
int a = 3;
void show() {
System.out.println("B的show");
}
}
class abc {
public static void main(String[] args) {
A abc = new B();
B bcd = new B();
System.out.println("成員變量與引用的類型有關:"+abc.a);
System.out.println("成員變量與引用的類型有關:"+bcd.a);
System.out.println("靜態成員變量與引用的類型有關:"+A.b);
System.out.print("方法與對象所屬的類有關:");
abc.show();
}
}
結果
成員變量與引用的類型有關:1
成員變量與引用的類型有關:3
靜態成員變量與引用的類型有關:2
方法與對象所屬的類有關:B的show