繁体   English   中英

子类不更新从基类获取的变量

[英]subclass not updating variable taken from base class

为什么我的输出没有给出预期的结果,即25 我知道我的问题很愚蠢,但是我是Java编程的新手。 输出是

run:
5
0
0
BUILD SUCCESSFUL (total time: 0 seconds)

但是根据我的预期,当我在辩论中通过5分时,预期的答案是5。

class A {
    int a;

    public void setA(int a) {
        this.a = a;
    }    
}

class B extends A {    
    public int multi() {
        int multi = a * a;
        System.out.println(multi);
        return multi;
    }    
}

class test {
    public static void main(String[] args) {
        A obj1 = new A();
        obj1.setA(5);
        B obj2 = new B();
        int c = obj2.multi();
        System.out.println(c);        
    }    
}

为什么输出没有给出预期的结果,即25

因为您有两个不同的对象,每个对象都有一个独立a字段。 您在一个对象中将值设置为5,然后在另一个对象上调用multi() ,因此它使用字段的默认值(0)。

如果两个部分都使用相同的对象,则会得到正确的答案:

B obj2 = new B();
A obj1 = obj2; // Now obj1 and obj2 refer to the same object
obj1.setA(5);
System.out.println(obj2.multi());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM