samodzielnym klasa abstrakcyjna za obiekt nie może być jednak anonimowa klasa abstrakcyjna obiekt może być wykonane, ponieważ jest zapewnienie wdrożenia wtedy i tam.
Powodem, dla którego Java nie zezwala na obiekt klasy abstrakcyjnej, ponieważ nie ma żadnej implementacji dla żadnej metody ani dla niektórych metod, więc jak mógłbyś mieć obiekt niekompletnej klasy. Ale w Anonimowy sposób dajesz jej implementację, więc pozwala ci mieć obiekt.
samej sprawie z interfejsem
AbstractDemo ad = new AbstractDemo() {
@Override
void showMessage() {
// TODO Auto-generated method stub
}
@Override
int add(int x, int y) {
// TODO Auto-generated method stub
return 0;
}
};
Tutaj AbstractDemo klasa jest abstrakcyjna, ale jego realizacja może mieć klasę obiektu, tak, tutaj anonimowy kod klasy realizuje kod, dlatego, że jest doskonale może mieć obiekt.
Więcej kopanie do niego, patrz poniższy kod, MyAbstractClass jest klasą abstrakcyjną, teraz jeśli wykomentuj
abstract void play();
to działa dobrze, Java jest umożliwienie, aby obiekt tej klasy abstrakcyjnej, ale kiedy odkomentowanie, które jak, zaprzecza, ponieważ nie ma żadnej implementacji tej metody, więc zaprzecza, aby uczynić przedmiot.
abstract class MyAbstractClass {
private String name;
public MyAbstractClass(String name)
{
this.name = name;
}
public String getName(){
return this.name;
}
abstract void play();
}
public class Test2 {
public static void main(String [] args)
{
MyAbstractClass ABC = new MyAbstractClass("name") {
};
System.out.println(ABC.getName());
}
}
sprawdzić dokładnie to {} po powołaniu konstruktora, co oznacza, że nie wymaga więcej realizacja, czy można zastąpić jego jeden z metody lub więcej.
Czy próbowałeś skompilować ten kod? Jaki był rezultat? –
Zauważ, że nadpisujesz abstrakcyjne metody. To anonimowa klasa. – Lion
Dane wyjściowe to 22 klasa com.mj.javademo.AbstractDemo 1 – DroidNinja