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