java - 对象创建/声明不同

标签 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;

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

最佳答案

第一个声明了一个 TailList 类型的变量。第二个声明一个 TailList 类型的变量,并使用 TailList 的新实例对其进行初始化。

关于第二个问题:sSList的一个实例。 SList 不扩展 TailList,因此它不是 TailList。将其转换为 TailList 不会神奇地使其成为 TailList

关于java - 对象创建/声明不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22022751/

相关文章:

java - Object 类中如何使用 getName() 方法?

python - 只导入一个类的静态方法

types - 有静态弱类型语言吗?

java - 子类成员变量对另一个子类的可见性

java - Java 中的动态转换

c++ - 带有 const 指针的 boost::dynamic_pointer_cast 不起作用?

java - Eclipse 在工作文件夹中找不到通过 jsp 生成的 java 文件

java - 返回 Android 操作系统名称

java - 如何将日志文件制作为 zip 文件?

C# 静态成员 "inheritance"- 为什么它存在?