2010-11-19 82 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(){};