我是Java的新手,所以请耐心等待我,我试着查看这个问题,但我遇到了麻烦,因为我不知道这个问题涉及的基本术语。
假设:
class Parent {}
class Child extends Parent {}
有什么区别:
Parent c = new Child();
和
Child c = new Child();
提前感谢您提供的任何帮助。
答案 0 :(得分:3)
在运行时没有区别。
仅Java编译器(和类型检查器)有所不同。在第一种情况下,您声明关于c
的最有用的信息是它是Parent
,即使运行时类型更具体。
这有两个主要影响:
c
可在需要Parent
时使用,但在需要Child
时则无法使用c
的类型更改为另一种类型(让我们假设为class Nephew extends Parent
),唯一必要的是改变实例化(例如new Child()
变为new Nephew()
} 第二个影响的结果是,如果代码编译并且c
被声明为Parent
,这意味着您没有使用任何尚未在Parent
中声明的功能{1}},因此从Parent
延伸的每个其他类都是有效的substitute。
答案 1 :(得分:0)