2010-11-19 84 views

回答

7

是,您可以:

abstract class AbstractClass { 

} 

class DeclaredClass extends AbstractClass { 

} 

AbstractClass c = new DeclaredClass(); 

以上是完全合法的。

+0

我以爲你不被允許進去對一個抽象類進行實例化,還是我不正確地閱讀最後一行? – nogamo 2010-11-19 00:44:23

+1

@nogame仔細看看。聲明的類實例化的不是抽象類。 – helpermethod 2010-11-19 00:47:04

+0

呵呵,所以如果是DeclaredClass c = new AbstractClass();那麼這將是無效的? – nogamo 2010-11-19 00:51:25

2

我的理解是,

List a = new ArrayList(); 

這裏List是一個ArrayList對象的引用。那麼,這個問題的意思是在抽象類的情況下可能嗎?

+1

順便提一下,List是一個接口。 – 2010-11-19 00:41:34

+0

我的壞...壞例子...但仍然是一個參考... – 2010-11-19 00:46:56

0

您可以通過兩種方式實例化一個抽象類:

abstract class AbstractClass {} 

1.擴展抽象類:

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

2.使用匿名類:

AbstractClass c = new AbstractClass(){};