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中则不然。这背后的逻辑是什么?
callme()
方法仅在基类中定义,因此return this.num;
返回基类的实例变量。
Java中没有覆盖实例变量。
如果您要在子类中覆盖该方法,请添加
public void callme()
{
System.out.print(this.num);
}
到OtherClass
,myObject2.callme();
将返回14,因为它将执行callme()
子类的方法,并因此访问子类实例变量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句