【问题标题】:Cannot instantiate an abstract class无法实例化抽象类
【发布时间】:2015-08-04 10:58:30
【问题描述】:
package InterfaceAbstractOverloadingOverriding;

public class instrumentExecute 
{

    public static void main(String[] args) 
    {
         GuitarAbstract g = new GuitarAbstract();
         NewGuitar ng = new NewGuitar(); 
         g.play();
         ng.play();

         g = new GuitarAbstract(7);
         ng = new NewGuitar(5);
         g.play();
         ng.play();
    }
}

我无法实例化GuitarAbstract

错误:

Cannot instantiate the type GuitarAbstract.GuitarAbstract is an abstract class.

【问题讨论】:

  • 不能直接实例化抽象类:http://stackoverflow.com/q/4579305/4682796
  • 那是因为它是一个抽象类。您需要创建从该类继承的具体内容,以便能够实例化某些内容。
  • 请遵循 java 命名约定。包必须全部小写,另一方面,类应该是驼峰式(InstrumentExecute)。

标签: java oop instantiation


【解决方案1】:

你不能直接实例化一个抽象类,但你可以为你的抽象类实例化一个anonymous class

例如,给定以下抽象类:

class GuitarAbstract {

  public abstract void play();
}

你可以像这样创建一个匿名类:

GuitarAbstract guitar = new GuitarAbstract() {

  @Override
  public void play() {
    System.out.println("Playing guitar!");
  }
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-05
    • 2015-10-06
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多