当子类扩展到父类java继承时,不获取返回值

w41d8nur  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(289)

我是一个初学者,我正在努力学习java中的继承概念,我做了一个程序来计算继承的面积​​一个正方形和一个立方体的体积,我把立方体类扩展到了正方形类
正方形(父)

public class Persegi {

double sisi;

public double getSisi() {
    return sisi;
}

public void setSisi(double sisi) {
    this.sisi = sisi;
}

public double getLuas(){
    return sisi * sisi;
}
}

多维数据集(子)

public class Kubus extends Persegi{

Persegi psg = new Persegi();

public double getVolume(){
 return psg.getLuas() * psg.getSisi();
}

但是当我在主类中打印值时,子类不会从我在父类中创建的方法中获取值
主要类别

public class MainProgram {
public static void main(String[] args){

    Persegi persegi = new Persegi();
    Kubus kubus = new Kubus();

    Scanner nilai = new Scanner(System.in);

    System.out.print("Masukkan nilai sisi = ");
    persegi.setSisi(nilai.nextInt());

    System.out.println("Luas = "+persegi.getLuas());
    System.out.println("Volume = "+kubus.getVolume());
}

结果就是这样的输出

s1ag04yj

s1ag04yj1#

而不是

public class Kubus extends Persegi{

    Persegi psg = new Persegi();

    public double getVolume(){
     return psg.getLuas() * psg.getSisi();
    }
}

使用

public class Kubus extends Persegi{
    public double getVolume(){
     return getLuas() * getSisi();
    }
}

您不需要在子类中创建父类的示例,您的子对象已经是一个示例了。
而且(正如其他人已经提到的),你必须打电话 setSisi()Kubus 示例
主要是:

public static void main(String[] args) {

    Persegi persegi = new Persegi();
    Kubus kubus = new Kubus();

    kubus.setSisi(42); // you have to set the 'sisi' of the kubus ... 42 = magic number

    Scanner nilai = new Scanner(System.in);

    System.out.print("Masukkan nilai sisi = ");
    persegi.setSisi(nilai.nextInt());

    System.out.println("Luas = " + persegi.getLuas());
    System.out.println("Volume = " + kubus.getVolume());
}
sxissh06

sxissh062#

persegi 以及 kubus 是两个不同的物体。你没有设置任何属性 kubus . 所以java中double type的默认值 0.0 打印用于 kubus.getVolume() 你用的是 psg 对象的属性来计算 getVolume() 方法。
如果你想为你的工作添加一个getter和setter psg :

public class Kubus extends Persegi {

    Persegi psg = new Persegi();

    public double getVolume() {
        return psg.getLuas() * psg.getSisi();
    }

    public Persegi getPsg() {
        return psg;
    }

    public void setPsg(Persegi psg) {
        this.psg = psg;
    }
}

然后可以设置 psg 对象:

Persegi persegi = new Persegi();
Kubus kubus = new Kubus();

Scanner nilai = new Scanner(System.in);

System.out.print("Masukkan nilai sisi = ");
persegi.setSisi(nilai.nextInt());

kubus.getPsg().setSisi(3.0); // assign 3.0 to sisi attribute of kubus object

System.out.println("Luas = "+persegi.getLuas());
System.out.println("Volume = "+kubus.getVolume());

然后你得到结果:

Masukkan nilai sisi = 4
Luas = 16.0
Volume = 27.0

解释 Volume = 27.0 输出: getLuas() 退货 3*3 = 9 getSisi()=3 getVolume() 退货 psg.getLuas() * psg.getSisi() : 9*3=27

相关问题