我为什么得到一个"是抽象的;无法实例化#34;错误

时间:2015-01-25 19:50:35

标签: java interface abstract

我创建了一个Square类,它是抽象类Shape的子类。我还创建了一个界面displayCharacters。我试图在我的Square类中使用displayCharacters,但不断收到此错误:" displayCharacters是abstract;无法实例化。"有人可以帮我看看我的错误在哪里,或者我必须做些什么才能让它发挥作用?

public class Square extends Shape
{
    private String square;
    displayCharacters dc = new displayCharacters();
    /**
     * Constructor for objects of class Square
     */
    public Square(String square)
    {
       this.square = square;
    }

    //accessor method
    public void makeSquare(String square)       
    {
       for (int a = 0; a < 4; a++)  //vertical for loop
       {
           for (int b = 0; b < 8; b++) //horizontal for loop
           {
                System.out.print(dc);
           }
           System.out.println();
       }
       System.out.println();
       this.square = square;
    }
}//end class Square

1 个答案:

答案 0 :(得分:0)

无法实例化接口。它不包含任何数据或逻辑。

接口只是一种覆盖方法的可访问方法的模式,由Class提供。您应该在类描述中添加“implements(your interface)”一词,以便将该接口与Class连接起来。 所以,

Class A {
    void method1() {}  // available in instantiated object
    void method2() {}  // available in instantiated object
    void method3() {}  // available in instantiated object
}

interface B {
    void method3();
    void method4();  
}

连接A&amp; B - &gt; Class A implements B您将收到IDE警告:Class A must either be declared abstract or implement absract method 'method4()' in 'B'。这意味着如果您使用方法创建A类实例(对象),由接口描述:B a = new A();您将只有 method3 &amp; 方法4 可用。你现在看,方法4在你的类体中是荒谬的,所以把它添加到那里。

我们现在有什么:

Class A implements B {
    void method1() {}
    void method2() {}
    void method3() {} // available in instantiated object
    void method4() {} // available in instantiated object
}

interface B {
    void method3();
    void method4();  
}

这是如何在一个类体中编写所有方法并在不同情况下提供几种不同方法的关键。