实例化对象&子/父类的关系

时间:2013-09-18 03:18:50

标签: java class object parent-child instantiation

所以,我试图在这里理解一些概念。

1)创建新对象的一般“语法”(如果你愿意)。例如,以下哪个是“正确的”(我知道实例化对象的方法不止一种):

//1) ChildClass obj = new ParentClass();

//2) ParentClass obj = new ChildClass();

我知道以下两个是“合法的”,但我无法理解在Child / Parent类中实例化对象的区别

(我已经知道这两个还可以):

ChildClass obj = new ChildClass();
ParentClass obj = new ParentClass();

2)基本上,我要问的是“哪个 ClassName 指的是从/上实例化对象的类(措辞?抱歉......),以及哪些 ClassName 该对象属于?“

如果这不合理,我道歉。我尽力把它写成文字。

(有些背景:我目前正在学习面向对象Java的第一个“课程”)

1 个答案:

答案 0 :(得分:4)

如果ChildClassParentClass延伸,则可以

ParentClass obj = new ChildClass();

但不是相反。

此声明的左侧是将声明或静态类型obj的名为ParentClass的变量放入当前作用域。右侧是为变量分配对动态类型new的{​​{1}}对象的引用。正在实例化ChildClass对象并将其分配给类型为ChildClass的变量。

换句话说,对于变量ParentClass,为了使编译器满意,您只能访问在其声明的类型上声明的方法,即。 obj。如果您想调用ParentClass方法,则需要进行投射。

ChildClass