gpt4 book ai didi

java - 为什么方法可以被覆盖而变量不能?

转载 作者:行者123 更新时间:2023-11-29 04:42:10 26 4
gpt4 key购买 nike

代码:

 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:

2

5

Inside method 1 test2

Inside method2 test1

问题:

为什么只重写了方法,而变量没有改变?

这种行为有名字吗? (就像方法的“重写”)

最佳答案

重写方法意味着让同一个方法调用执行另一个方法体(在子类中)。

对于变量,“覆盖”是不必要的:您可以覆盖变量的值。

在子类中声明一个具有相同名称的变量隐藏父类变量并引入一个额外的字段。

对于可覆盖的方法,需要一种特殊的机制,以便代码中的位置可以调用对象的实际类指定的方法。这与访问字段相反。

关于java - 为什么方法可以被覆盖而变量不能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38760917/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com