对象创建/声明不同

时间:2014-02-25 18:18:51

标签: java inheritance casting

在我的代码中

Public class TailList extends SList{
     ...
}

第一个问题:

这两行之间有什么不同:

TailList t;

TailList t = new TailList();

第二个问题是:

如果我写:

SList s = new SList();

t = (TailList) s;  // Compile-time Error

为什么?

但是,如果我写:

t = (TailList) s;

我的第一个问题是,没有错误!

1 个答案:

答案 0 :(得分:1)

第一个声明一个TailList类型的变量。第二个声明了一个TailList类型的变量,并用一个新的TailList实例初始化它。

关于第二个问题:sSList的一个实例。 SList不会延伸TailList,因此 不是TailList。将其投放到TailList并不会让它成为TailList