java - 接口(interface)和继承编译时错误

标签 java object inheritance methods interface

我编写了一个简短的程序,它使用继承和接口(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/

相关文章:

java - 在 Apache Spark 中加入、聚合然后选择特定列

ruby - 如何从 Ruby 中的字符串 "A::B::C"获取类对象?

java继承方法

c++ - 引用类型和继承问题

java - 将哈希表中的哈希表拆分为两个单独的哈希表

java - 最小化java中的复杂线性多变量函数

java - GWT 代码还是 GWT 设计器?

c++ - 编译器错误 : No appropriate default constructor avaible

javascript - 尽管对象存在,但未定义 JS Ajax onreadystatechange

Java 实例化接口(interface)会导致奇怪的行为