2010-11-19 5 views

Répondre

7

Oui, vous pouvez:

abstract class AbstractClass { 

} 

class DeclaredClass extends AbstractClass { 

} 

AbstractClass c = new DeclaredClass(); 

Ce qui précède est tout à fait valable.

+0

Je pensais que vous n'étiez pas autorisé à stantiate une classe abstraite, ou suis-je en train de lire incorrectement la dernière ligne? – nogamo

+1

@nogame Regardez de plus près. La classe déclarée est instanciée et non la classe abstraite. – helpermethod

+0

Oh, donc si c'était DeclaredClass c = new AbstractClass(); alors ce serait invalide? – nogamo

2

Ce que je comprends est,

List a = new ArrayList(); 

Ici List est une référence à un objet ArrayList. Donc, la question signifie est-ce possible dans le cas de la classe abstraite?

+1

La liste est une interface, soit dit en passant. –

+0

mon mauvais ... mauvais exemple ... mais toujours une référence ... –

0

Vous pouvez instancier une classe abstraite de 2 façons:

abstract class AbstractClass {} 

1. L'extension de la classe abstraite:

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

2. Utiliser Anonyme Classe:

AbstractClass c = new AbstractClass(){}; 
Questions connexes