2010-11-19 18 views

Odpowiedz

7

Tak można:

abstract class AbstractClass { 

} 

class DeclaredClass extends AbstractClass { 

} 

AbstractClass c = new DeclaredClass(); 

Powyższe jest całkowicie poprawny.

+0

Myślałem, że nie wolno ci wejść stantiować klasę abstrakcyjną, czy też czytam ostatnią linię niepoprawnie? – nogamo

+1

@nogame Przyjrzyj się bliżej. Zadeklarowana klasa jest instancjonowana, a nie Klasa abstrakcyjna. – helpermethod

+0

Och, więc gdyby to była DeklaredClass c = new AbstractClass(); to byłoby nieważne? – nogamo

2

Co rozumiem to,

List a = new ArrayList(); 

Tutaj List jest odwołaniem do obiektu ArrayList. Pytanie więc, czy jest to możliwe w przypadku klasy abstrakcyjnej?

+1

Lista to interfejs, przy okazji. –

+0

mój zły ... zły przykład ... ale wciąż referencja ... –

0

można utworzyć wystąpienia klasy abstrakcyjnej na 2 sposoby:

abstract class AbstractClass {} 

1. Rozszerzenie klasy abstrakcyjnej:

class ConcreteClass extends AbstractClass {} 
    AbstractClass c = new ConcreteClass(); 

2. Korzystanie anonimową klasę:

AbstractClass c = new AbstractClass(){}; 
Powiązane problemy