Abstract Class 未初始化参数
Abstract Class not initializing a parameter
我正在尝试创建抽象 class SolidFigure。圆柱体和矩形棱柱体都将继承自它。
我的问题是,每当我实例化两个 classes 中的任何一个(圆柱或 rectPrism)
这是代码:
实体图:
public abstract class SolidFigure {
private double height;
public SolidFigure(double height) {
height = this.height;
}
public double getHeight() {
return height;
}
protected abstract boolean isEqual(SolidFigure s);
protected abstract double calculateVolume();
}
柱面:
class Cylinder extends SolidFigure{
private double radius;
private static double PI = 3.14;
public Cylinder(double height, double radius) {
super(height);
this.radius = radius;
}
@Override
protected double calculateVolume() {
return radius * PI * getHeight();
}
@Override
protected boolean isEqual(SolidFigure s) {
return this.calculateVolume() == s.calculateVolume();
}
}
直角棱镜:
class RectPrism extends SolidFigure{
private double length, width;
public RectPrism(double height, double length, double width) {
super(height);
this.length = length;
this.width = width;
}
@Override
protected double calculateVolume() {
return length * width * getHeight();
}
@Override
protected boolean isEqual(SolidFigure s) {
return this.calculateVolume() == s.calculateVolume();
}
}
主要:
SolidFigure c = new Cylinder(12.0, 3);
RectPrism r = new RectPrism(10.0, 4, 2);
System.out.println(c.getHeight()); // This is zero
System.out.println(r.calculateVolume()); // zero resulting from height
应该反过来
public SolidFigure(double height) {
this.height = height;
}
请更改
public SolidFigure(double height) {
this.height = height;
}
你的代码有什么问题
在您的代码中 height = this.height ;
这意味着您正在将实例变量 height 的值分配给参数 veriable height。它有默认值 0d 所以你得到这样的回答。
我正在尝试创建抽象 class SolidFigure。圆柱体和矩形棱柱体都将继承自它。
我的问题是,每当我实例化两个 classes 中的任何一个(圆柱或 rectPrism)
这是代码:
实体图:
public abstract class SolidFigure {
private double height;
public SolidFigure(double height) {
height = this.height;
}
public double getHeight() {
return height;
}
protected abstract boolean isEqual(SolidFigure s);
protected abstract double calculateVolume();
}
柱面:
class Cylinder extends SolidFigure{
private double radius;
private static double PI = 3.14;
public Cylinder(double height, double radius) {
super(height);
this.radius = radius;
}
@Override
protected double calculateVolume() {
return radius * PI * getHeight();
}
@Override
protected boolean isEqual(SolidFigure s) {
return this.calculateVolume() == s.calculateVolume();
}
}
直角棱镜:
class RectPrism extends SolidFigure{
private double length, width;
public RectPrism(double height, double length, double width) {
super(height);
this.length = length;
this.width = width;
}
@Override
protected double calculateVolume() {
return length * width * getHeight();
}
@Override
protected boolean isEqual(SolidFigure s) {
return this.calculateVolume() == s.calculateVolume();
}
}
主要:
SolidFigure c = new Cylinder(12.0, 3);
RectPrism r = new RectPrism(10.0, 4, 2);
System.out.println(c.getHeight()); // This is zero
System.out.println(r.calculateVolume()); // zero resulting from height
应该反过来
public SolidFigure(double height) {
this.height = height;
}
请更改
public SolidFigure(double height) {
this.height = height;
}
你的代码有什么问题
在您的代码中 height = this.height ;
这意味着您正在将实例变量 height 的值分配给参数 veriable height。它有默认值 0d 所以你得到这样的回答。