Setter,Getters和Subclasses的问题

时间:2017-12-14 19:11:34

标签: java inheritance setter getter

我现在已经做了几天的任务,一直在撞墙。基本上假设为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行:预期的类,接口或枚举。

编辑:有人建议我删除摘要,所以我这样做了。

1 个答案:

答案 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;
 }
}