所以,我试图在这里理解一些概念。
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的第一个“课程”)
答案 0 :(得分:4)
如果ChildClass
从ParentClass
延伸,则可以
ParentClass obj = new ChildClass();
但不是相反。
此声明的左侧是将声明或静态类型obj
的名为ParentClass
的变量放入当前作用域。右侧是为变量分配对动态类型new
的{{1}}对象的引用。正在实例化ChildClass
对象并将其分配给类型为ChildClass
的变量。
换句话说,对于变量ParentClass
,为了使编译器满意,您只能访问在其声明的类型上声明的方法,即。 obj
。如果您想调用ParentClass
方法,则需要进行投射。
ChildClass