gpt4 book ai didi

java - 子类java中具有相同名称的属性

转载 作者:行者123 更新时间:2023-11-29 04:23:24 25 4
gpt4 key购买 nike

public class HelloWorld
{
protected int num = 12;

public void callme()
{
System.out.print(this.num);
}

public static void main(String[] args)
{
HelloWorld myObject1 = new HelloWorld();
myObject1.callme();
OtherClass myObject2 = new OtherClass();
myObject2.callme();
}
}


public class OtherClass extends HelloWorld
{
protected int num = 14;
}

为什么输出是“1212”而不是“1214”?在 php 中它是“1214”,但在 java 中不是 viceversa。这背后的逻辑是什么?

最佳答案

callme()方法只定义在基类中,因此return this.num;返回基类的实例变量。

Java 中没有重写实例变量。

如果您要在子类中覆盖该方法,通过添加

public void callme()
{
System.out.print(this.num);
}

对于OtherClassmyObject2.callme();会返回14,因为它会执行子类的callme()方法, 从而访问子类的实例变量。

关于java - 子类java中具有相同名称的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47739999/

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