我编写了一个简短的程序,它使用继承和接口(interface)关系来计算用户选择的形状的面积和周长。当我尝试编译以下类时收到编译时错误。
类广场
public class Square extends Quadrilateral
{
double side1 =this.side1;
double side2 = this.side2;
double perimeter = this.perimeter;
double area = this.area;
Square(double instanceSide1, double instanceSide2) {
side1 = instanceSide1;
side2 = instanceSide2;
}
@Override
public double area()
{
area = side1 *side2;
return area;
}
@Override
public double perimeter() //math equation for determing perimeter
{
this.perimeter = (side1 * 2) + (side2 * 2) ;
return perimeter;
}
}
这是我的四边形类(class)
public abstract class Quadrilateral implements Polygon{
}
这是多边形类
public interface Polygon {
abstract void area();
abstract void perimeter();
}
这是我为运行代码而构建的测试器类。
public static void main(String[] args) //Constructor initalizing main class
{
int numberSides;
int length;
int base;
Scanner sides = new Scanner(System.in); //Initializing Scanner Class
/**
* Do/while loop for selecting a 3 or 4 sided object
*/
do
{
System.out.println("Do you want a 3 or 4 sided shape? (Type either "
+ "3 or 4).");
numberSides = sides.nextInt();
} while (numberSides < 3 || numberSides > 4);
if (numberSides == 3) {
System.out.println("How long are the sides that are the same lenth?");
length = sides.nextInt();
System.out.println("How wide is the base? (whole numbers");
base = sides.nextInt();
IsoscelesTriangle Isoc = new IsoscelesTriangle(length, base);
System.out.println("The area of the isocolese triangle is: " + Isoc.area());
System.out.println("The perimeter of the isocolese triangle is: " + Isoc.perimeter());
} else {
System.out.println("How long are the sides are the same?");
length = sides.nextInt();
System.out.println("How wide is the base?");
base = sides.nextInt();
if (length == base) {
Square Quad = new Square(length, base);
System.out.println("The area of the square is: " + Quad.area());
System.out.println("The perimeter of the square is: " + Quad.perimeter());
} else {
Rectangle Quad = new Rectangle(length, base);
System.out.println("The area of the rectangle is: " + Quad.area());
System.out.println("The perimeter of the rectangle is: " + Quad.perimeter());
}
}
}
}
最佳答案
实现该接口(interface)的类没有与该接口(interface)匹配的方法。接口(interface)的方法返回 void,而类的方法返回 double。它们必须完全匹配,可能是类是正确的而接口(interface)是错误的——将接口(interface)方法声明更改为返回 double。
将来,如果您有疑问,您将需要发布所有错误/异常消息。这将帮助我们节省时间并为您提供更好的答案。
关于java - 接口(interface)和继承编译时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25477015/