java面向对象理解问题

问题描述 投票:0回答:1

这是我的第一堂课

public class DigitalDevice {

    public int abc = 1;
}

这是我的第二堂课

public class SmartPhone extends DigitalDevice {

    SmartPhone() {
        abc = 2;
        super.abc=3;
        DigitalDevice.abc=4;
        
    }
}

在SmartPhone类中,当我回忆abc时,DigitalDevices的abc是可访问和可更改的,当我回忆super.abc时,DigitalDevices的abc也是可访问和可更改的,但何时回忆DigitalDevice.abc,DigitalDevices的abc 不可访问且不可更改,并且 ide 要求在 DigitalDevice 类中将 abc 设为静态。 在 SmartPhone 类 abc=super.abc=DigitalDevice.abc 中,这是真的吗?

java object inheritance
1个回答
0
投票

不,这不是真的。

abc
super.abc
是相同的,以及
this.abc
(在您的代码中未使用)。但是
DigitalDevice.abc
是尝试调用类 abc 中名为
DigitalDevice
static
字段。该类中没有这样的静态字段,您的 IDE 正确地告诉您这一点。检查何时在JAVA中使用静态/非静态变量,了解静态非静态之间的区别。

© www.soinside.com 2019 - 2024. All rights reserved.