java - 我的 Java 中的 ShapeApp 出现问题

标签 java class inheritance interface

我收到以下错误,这些是我的类(class)。

形状类别:

public abstract class Shape implements Triangle{

 protected static final double DEFAULT_SIZE = (double) 1.0;
 protected static final String DEFAULT_NAME = "Unknown";
 private String shapeName;

 public Shape(){
    this.shapeName = DEFAULT_NAME;
 }

 public Shape(String name) {
    setShapeName(name);

 }

 protected void setShapeName(String name) {
 if( name.trim().length() == 0 )
     shapeName = DEFAULT_NAME;
 else
     shapeName = new String ( name );

 }

 public String getShapeName() {
    //name
 return shapeName;

 }



public abstract double getSurfaceArea();

public abstract double getPerimeter();


public String toString{
    return String.format("%s %s\nshape name: %s",getShapeName());
}
}

矩形类:

public class Rectangle extends Shape implements Triangle {



private double length;
private double heigth;

public Rectangle() {
    super("Rectangle");
    setLength( super.DEFAULT_SIZE );
    setHeight( Shape.DEFAULT_SIZE );

}

public Rectangle(double theLength, double theHeight ){
    super("Rectangle");
    if ( theLength < 0 )
        setLength( Shape.DEFAULT_SIZE );
    else setLength( theLength );

    if ( theHeight < 0)
        setHeight( Shape.DEFAULT_SIZE );
    else setHeight( theHeight );
}



public double getSurfaceArea() {
    return this.length * this.heigth;
}

public double getPeremeter() {
    return 2 * this.length + 2 * this.length;

}

public double getLength(){
    return this.length;
}

public double getHeight(){
    return  this.heigth;
}

public void setLength( double theLength ){
    if ( theLength <= 0 )
        return;
    this.length = theLength;
}

public void setHeight( double theHeight ){
    if (theHeight <= 0 )
        return;
    this.heigth = theHeight;

}

public String toString(){
    return String.format("%s: \n%s: %s (%s) \n%s: %d \n%s: $%,.2f",
                      "Rect Surface Area ", "Rect Peremeter", getSurfaceArea(), getPeremeter());
}

 public double getSizeAmount(){

}

   }

圆类:

public class Circle extends Shape {
private double radius;

public Circle( double theRadius ){
    super( "Circle" );
    if ( theRadius <= 0.0 )
        setRadius( Shape.DEFAULT_SIZE );
    else
        setRadius( theRadius );
}

public Circle(String string, String string2, String string3, String string4) {
    // TODO Auto-generated constructor stub
}

public double getSurfaceArea(){

    return this.radius * this.radius * Math.PI;
}

public double getPeremeter(){
    ;
    return 2 * this.radius + Math.PI;
}

public double getRadius(){
    return this.radius;

}

public void setRadius( double theRadius ) {
    if( theRadius <= 0 )
        return;
    this.radius = theRadius;
}

@Override
public double getPerimeter() {
    // TODO Auto-generated method stub
    return 0;

     public double getSizeAmount(){

     }

     public String toString(){
         return String.format("%s: \n%s: %s (%s) \n%s: %d \n%s: $%,.2f",
                  "Circle Surface Area ", "Circle Peremeter", getSurfaceArea(), getPeremeter());
     }
}
   }

三角形类:

//triangle interface decleration
public interface Triangle {



double getSizeAmount(); //calculate sizes of triangle; no implementation

    }//end interface triangle

主类:

    import javax.swing.JOptionPane;




    public class ShapeApp {

//public static void main(String args[])
public static void main(String[] args) {

    Triangle triangleObjects[] = new Triangle[ 4 ];

    triangleObjects[ 0 ] = new Rectangle("3.5", "4.6","42");
    triangleObjects[ 1 ] = new Rectangle("3", "2","34");
    triangleObjects[ 2 ] = new Circle("Circle", "Rectangle","0808","0808");
    triangleObjects[ 3 ] = new Circle("Circle","Rectangle","2334","2423");

    System.out.println( "List of all Shapes:\n" );

    for( Triangle currentTriangle : triangleObjects ){

        System.out.printf("%s \n%s: $%,.2f\n\n",
                currentTriangle.toString(),
                "ovo testiramo", currentTriangle.getSizeAmount());

    }


}

}

这是我收到的错误:

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
The constructor Rectangle(String, String, String) is undefined
The constructor Rectangle(String, String, String) is undefined

at ShapeApp.main(ShapeApp.java:14)

最佳答案

错误信息非常清楚:

The constructor Rectangle(String, String, String) is undefined

at ShapeApp.main(ShapeApp.java:14)

您正在创建带有 3 个参数的 Rectangle 对象。

 new Rectangle("3.5", "4.6","42");

但是你的 Rectangle 类只有两个构造函数

1) Consturctor with Zero args 2) Constructor with 2 args

public Rectangle() {
  ......

}

public Rectangle(double theLength, double theHeight )
{ ....
}

您需要在 Rectangle 类中添加带有 3 个参数的构造函数(或者)将对象创建更改为两个参数构造函数。

关于java - 我的 Java 中的 ShapeApp 出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12311547/

相关文章:

java - 从数据库中删除一行有什么问题?

c# - 如何调用顶级构造函数?

IE 中的 Javascript 错误

Java继承...我认为。也许不会

c# - 用c#泛型继承,而继承类类型

c++ - 如何删除没有虚拟析构函数的多态类类型的对象

java - .length 无法解析或不是字段

java - 有没有办法在 Integer 对象中用 Java 中的 HashMap 值执行加法/减法?

java - 扩展 Java 类并强制现有库使用扩展类

C++在基类问题上返回带有模板的嵌套类