2015-05-22 5 views
-1
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. 
+2

Вы не можете непосредственно создать экземпляр абстрактного класса: [Http: // stackoverflow.com/q/4579305/4682796](http://stackoverflow.com/q/4579305/4682796) – jmgross

+0

Это потому, что это абстрактный класс. Вам нужно создать что-то конкретное, которое наследуется от этого класса, чтобы иметь возможность что-то создать. –

+0

Пожалуйста, следуйте соглашениям об именах java. Пакеты должны быть все в нижнем регистре, классы, с другой стороны, должны быть верблюжью (InstrumentExecute), например. – zubergu

ответ

2

Вы не можете непосредственно создать экземпляр абстрактного класса, но вы можете создать экземпляр anonymous class для вашего абстрактного класса.

К примеру, учитывая следующие абстрактный класс:

class GuitarAbstract { 

    public abstract void play(); 
} 

Вы можете создать анонимный класс следующим образом:

GuitarAbstract guitar = new GuitarAbstract() { 

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