public class ClassTest {
public static void main(String args[]) {
test1 cc = new test2();
System.out.println(cc.A);
System.out.println(cc.B);
cc.method1();
cc.method2();
}
}
class test1 {
static int A = 2;
int B = 5;
void method1() {
System.out.println("Inside method 1 test1");
}
static void method2() {
System.out.println("Inside method2 test1");
}
}
class test2 extends test1 {
static int A = 4;
int B = 6;
void method1() {
System.out.println("Inside method 1 test2");
}
static void method2() {
System.out.println("Inside method 2 test2");
}
}
OUTPUT:
內部方法1 TEST2
裏面方法2 TEST1
問:
爲什麼只有方法覆蓋,但變量保持不變?
此行爲是否有名稱? (如方法的「覆蓋」)
問題「爲什麼」很棘手 - 這是因爲語言的設計者決定像這樣做,原因是簡單,高效,清晰,等等。 – RealSkeptic
這就是語言的設計。至於爲什麼,你不得不問Java的發明者。 –
你正在調用一個實例的靜態方法? ''static void method2()' - >'cc.method2();' – Fildor