我现在已经做了几天的任务,一直在撞墙。基本上假设为Polygon设置类似于形状的超类,然后封装一些数据并使用setter和getters将该信息调用到子类中。我一遍又一遍地重新阅读我们的书,并在线观看大量的教程,但它只是没有点击我。以下是我目前为超类提供的一个例子:
public class Polygon {
private double Sides;
private double Length;
private double Width;
private double Height;
public double calcArea();
public double calcPerimeter();
}
这个想法是子类将能够定义参数。 我认为这是正确的,但是当我开始我的子类时,我失去了它,继续我现在的第一个,根据建议编辑:
public class Triangle extends Polygon {
public Triangle(){
}
public void Triangle (double Base, double Height) {
this.Width = Base;
this.Height = Height;
this.Length = Length;
}
public double getWidth;
return this.Width;
}
public static setWidth(double Width){
this.Width = 10;
}
public double getHeight;
return this.Height;
}
public static setHeight(double Height){
this.Height = 10;
}
public double getLength;
return this.Length;
}
public static setLength(double Width){
this.Height = 10;
}
@Override
public calcArea() {
return 0.5 * Width * Height;
}
@Override
public double calcPerimeter() {
return Length + Length + Length;
}
}
这是一项正在进行中的巨大工作,所以我知道它有点混乱,但是我几乎每行都有错误而且我不知道该组的哪一部分/得到我做错了。感谢,任何帮助我指向正确方向的人都将不胜感激。
现在我得到的错误是: 第7/8/9行:宽度。高度,长度在Polygon中具有私人访问权限
第13行:非法开始表达
然后第15/18/19/20/22/23/25/26/27/28/29/31/34/38/40行:预期的类,接口或枚举。
编辑:有人建议我删除摘要,所以我这样做了。
答案 0 :(得分:1)
首先,您应该注意,这不是您在Java中声明函数的方式。
public double getLength;
return this.Length;
}
但这应该是
public double getLength(){
return this.Length;
}
第二件事,如果你宣布所有类都是抽象的,那么你就不能创建对象(使用new
关键字)。
顺便说一下这是一个工作版本:
public class Triangle extends Polygon {
public Triangle(double base,double height,double length){
super(base,height,length);
}
@Override
public double calcArea() {
return 0.5 * this.getWidth() * this.getHeight();
}
@Override
public double calcPerimeter() {
return this.getLength() + this.getLength() + this.getLength();
}
//tests
public static void main(String [] args) {
Triangle triangle = new Triangle(10,20,30);
System.out.println(triangle.getWidth() + " width of a triangle");
System.out.println(triangle.getHeight() + " height of a triangle");
System.out.println(triangle.getLength() + " length of a triangle");
}
}
如果你想给超类(边)提供第4个参数,那么你可以创建一个带有4个参数的额外构造函数而不删除它。
这是您的Polygon类:
public abstract class Polygon {
private double Length;
private double Width;
private double Height;
public Polygon(double base, double height, double length) {
this.Width = base;
this.Height = height;
this.Length = length;
}
public abstract double calcArea();
public abstract double calcPerimeter();
public double getWidth() {
return this.Width;
}
public void setWidth(double Width){
this.Width = Width;
}
public double getHeight() {
return this.Height;
}
public void setHeight(double Height){
this.Height = Height;
}
public double getLength() {
return this.Length;
}
public void setLength(double length){
this.Length = length;
}
}