Java 为什么我会得到一个;是抽象的;无法实例化";错误
我创建了一个Square类,它是抽象类形状的子类。我还创建了一个界面displayCharacters。我试图在我的Square类中使用displayCharacters,但一直出现这样的错误:“displayCharacters是抽象的;无法实例化。”有人能帮我看看我的错误在哪里,或者我必须做些什么才能让它工作吗Java 为什么我会得到一个;是抽象的;无法实例化";错误,java,interface,abstract,Java,Interface,Abstract,我创建了一个Square类,它是抽象类形状的子类。我还创建了一个界面displayCharacters。我试图在我的Square类中使用displayCharacters,但一直出现这样的错误:“displayCharacters是抽象的;无法实例化。”有人能帮我看看我的错误在哪里,或者我必须做些什么才能让它工作吗 public class Square extends Shape { private String square; displayCharacters dc = n
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
公共类方形扩展形状
{
私人弦广场;
displayCharacters dc=新的displayCharacters();
/**
*类Square对象的构造函数
*/
公共广场(弦广场)
{
这个正方形=正方形;
}
//存取器方法
公共空心方形(字符串方形)
{
for(int a=0;a<4;a++)//垂直for循环
{
for(int b=0;b<8;b++)//水平for循环
{
系统输出打印(dc);
}
System.out.println();
}
System.out.println();
这个正方形=正方形;
}
}//末级广场
无法实例化接口。它不包含任何数据或逻辑
接口只是可访问方法的一种模式,它覆盖了类提供的方法。您应该在类描述中添加单词“implements(your interface)”,以将该接口与类连接起来。
所以
连接A&B->类A实现B
,IDE将警告您:类A必须声明为抽象的,或者在“B”中实现abstract方法“method4()”
。这意味着,如果使用接口描述的方法创建类A的实例(对象):BA=newA()代码>您将只有方法3和方法4可用。现在你看到了,method4在你的类主体中不存在,所以把它添加到那里
我们现在有什么:
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();
}
这是如何在一个类体中编写所有方法并在不同情况下提供多个不同方法的关键。接口不是用来实例化的。如果您有一个实现接口displayCharacters
的类Character
,那么您希望创建Character
的实例,而不是像您现在在代码中尝试的那样创建接口displayCharacters
…
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();
}