我一直很难理解我确信非常简单的东西,但我是java的新手,所以我问你们:
public class A
{
public int num;
/**
* Constructor for objects of class A
*/
public A(){
num = 222;
}
public A(int n){
num = n;
}
public int getNum(){
return num;
}
public boolean f(A a){
return num == a.num*2;
}
}
public class B extends A
{
public int num;
public B(int n)
{
num = n;
}
public boolean f(B b){
return num == b.num;
}
}
public class Tester
{
public static void main(String[]args){
A a = new B(14);
System.out.print(a.num);
}
}
这个输出是:222。
我的问题是为什么222而不是14? 我确实将构造函数放在B中,获取了int,并将int(14)放在b构造函数中。那么为什么我得到的结果好像我用空A承包商? 任何人都可以解释一下这个逻辑吗?
谢谢!
答案 0 :(得分:0)
因为您有两个变量num
,并且当您将对象向上转换为A
时,您正在使用A类中仅包含默认值的变量