java 中的简单摘要 class
simple abstract class in java
所以我需要为容器实现一个 getCurrentVolumeInCCs 方法 class,但是我对如何实现有点困惑。此外,我在 Glass 和 Cup classes 中获得了正确的体积值,但是当我在 Vessel class 中调用任何其他方法时,这些值不会被保留。我猜是因为它们存储在 subclass 中,不能在 base class 中使用,对吗?
船只 Class(摘要)
package containers;
public abstract class Vessel {
private double volume;
private double currentVolume;
public Vessel() {
volume = 0;
currentVolume = 0;
}
abstract double getVolumeInCC();
public double getCurrentContents() {
return currentVolume;
}
public double drink(double amountToDrink) {
double volumeLeft;
System.out.println("you drank " + amountToDrink + " CCs");
volumeLeft = volume - amountToDrink;
return volumeLeft;
}
public double fill(double amountPoured) {
double volumeAdded = amountPoured;
double volumeSpilled = 0;
System.out.println("you poured " + amountPoured + " CCs");
if(volumeAdded > volume) {
volumeSpilled = amountPoured - volume;
System.out.println("you spilled " + volumeSpilled);
}
return volumeAdded;
}
}
玻璃 Class
package containers;
public class Glass extends Vessel{
private double volume;
private double radiusBase;
private double height;
public Glass() {}
public Glass(double r, double h) {
this.radiusBase = r;
this.height = h;
}
@Override
double getVolumeInCC() {
volume = (Math.PI)*(Math.pow(radiusBase, 2))*height;
return volume;
}
}
杯子Class
package containers;
public class Cup extends Vessel {
private double volume;
private double radiusLip;
public Cup(double r) {
volume = 0;
this.radiusLip = r;
}
@Override
double getVolumeInCC() {
volume = (0.5)*(Math.PI)*(Math.pow(radiusLip, 3))*(4/3);
return volume;
}
}
您在子类 中从 Vessel
隐藏 volume
,因为它是一个 private
字段。我相信您想让 volume
和 currentVolume
在 Vessel
、
中受到保护
protected double volume;
protected double currentVolume;
此外,您应该从子 类 中删除 private double volume
(这样您就不会隐藏他们现在从 Vessel
继承的字段)。
所以我需要为容器实现一个 getCurrentVolumeInCCs 方法 class,但是我对如何实现有点困惑。此外,我在 Glass 和 Cup classes 中获得了正确的体积值,但是当我在 Vessel class 中调用任何其他方法时,这些值不会被保留。我猜是因为它们存储在 subclass 中,不能在 base class 中使用,对吗?
船只 Class(摘要)
package containers;
public abstract class Vessel {
private double volume;
private double currentVolume;
public Vessel() {
volume = 0;
currentVolume = 0;
}
abstract double getVolumeInCC();
public double getCurrentContents() {
return currentVolume;
}
public double drink(double amountToDrink) {
double volumeLeft;
System.out.println("you drank " + amountToDrink + " CCs");
volumeLeft = volume - amountToDrink;
return volumeLeft;
}
public double fill(double amountPoured) {
double volumeAdded = amountPoured;
double volumeSpilled = 0;
System.out.println("you poured " + amountPoured + " CCs");
if(volumeAdded > volume) {
volumeSpilled = amountPoured - volume;
System.out.println("you spilled " + volumeSpilled);
}
return volumeAdded;
}
}
玻璃 Class
package containers;
public class Glass extends Vessel{
private double volume;
private double radiusBase;
private double height;
public Glass() {}
public Glass(double r, double h) {
this.radiusBase = r;
this.height = h;
}
@Override
double getVolumeInCC() {
volume = (Math.PI)*(Math.pow(radiusBase, 2))*height;
return volume;
}
}
杯子Class
package containers;
public class Cup extends Vessel {
private double volume;
private double radiusLip;
public Cup(double r) {
volume = 0;
this.radiusLip = r;
}
@Override
double getVolumeInCC() {
volume = (0.5)*(Math.PI)*(Math.pow(radiusLip, 3))*(4/3);
return volume;
}
}
您在子类 中从 Vessel
隐藏 volume
,因为它是一个 private
字段。我相信您想让 volume
和 currentVolume
在 Vessel
、
protected double volume;
protected double currentVolume;
此外,您应该从子 类 中删除 private double volume
(这样您就不会隐藏他们现在从 Vessel
继承的字段)。