You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何正确访问父类仅声明未初始化的属性?

问题解答

父类未赋值属性的子类可用性

只要父类属性没有被private修饰,子类就可以正常访问该属性。无论你是通过setter方法还是构造方法给子类实例自身继承的父类属性赋值,赋值后子类都可以正常使用这些属性。

代码输出0.0的原因

你的代码里创建了两个完全独立的对象实例,不同实例的属性是互不关联的:

  • 你创建的父类实例obj调用SetRadius()后,仅会给obj自己的radius属性赋值
  • 你后续创建的子类实例obj1是全新的对象,它自身继承的radius属性从未被赋值,而double类型成员变量的默认初始值就是0.0,最终体积计算结果自然为0.0

修正方案

直接给子类实例调用继承来的SetRadius()方法赋值即可,修正后的代码如下:

import java.util.Scanner;

class circle2 
{
    double radius;
    double Area;
    Scanner Sc = new Scanner(System.in);

    void SetRadius() {
        System.out.println("Enter Radius");
        radius = Sc.nextDouble();
    }
}
class cylinder2 extends circle2
{
    double height=5,volume;
    void GetVolume(){
        volume=Math.PI*radius*radius*height;
        System.out.println("Volume of cylinder : " + volume);
    }
}

public class Ch10Alternate_PS {
    public static void main(String[] args) {
        cylinder2 obj1 = new cylinder2();
        obj1.SetRadius();
        obj1.GetVolume();
  }
}

补充提示:原代码未导入java.util.Scanner类,直接运行会触发编译错误,修正代码已经补充了对应的导入语句。

内容的提问来源于stack exchange,提问作者Angsu Sen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 19:15:04