继承与Java继承的混淆
我目前正在学习一本AP CS考试学习指南,我在理解过程中遇到了困难。假设我有一个名为Employee的类,还有一个继承Employee的名为Manager的类。以下声明之间有区别吗
Employee empl1 = new Manager();
Manager empl2 = new Manager();
我基本上搞不清楚物体名称前的这个词在做什么,以及它与新名称后的这个词有什么不同。感谢您的帮助
你可以在下面搜索框中键入要查询的问题!
我目前正在学习一本AP CS考试学习指南,我在理解过程中遇到了困难。假设我有一个名为Employee的类,还有一个继承Employee的名为Manager的类。以下声明之间有区别吗
Employee empl1 = new Manager();
Manager empl2 = new Manager();
我基本上搞不清楚物体名称前的这个词在做什么,以及它与新名称后的这个词有什么不同。感谢您的帮助
# 1 楼答案
当您使用类型为Super class的对象引用基类时,该对象只能访问基类的重写方法,或者简而言之,只能访问两个类共同拥有的方法。。。 用一个超类引用一个基类对象就是我们在java中所说的虚拟方法调用
# 2 楼答案
名称前面的部分是对正在创建的对象的引用的类型。在右边,在
new
之后,您正在调用一个特定类的构造函数(在您的示例中是类Manager
)你可以写
因为你在那里创建的所有对象都是员工。然而,你不会写作
因为秘书不是经理
引用的类型(即名称前的术语)决定了可以使用该引用调用哪些方法。例如,你可以写
但是你可以而不是写作
因为你只知道对象是员工,而不是经理。(他是经理,但你不知道,因为推荐人只告诉你他是员工)
# 3 楼答案
左边的表单是“接口”,继承允许您使用}。区别在于,对经理员工调用的方法首先来自
Manager
作为Employee
,因为Manager
{a1}{Manager
,然后从Employee
继承行为。另一个区别是,如果调用getClass().getName()
。考虑每个java对象从java.lang.Object继承,这就是为什么您可以调用任何对象上的^ {< CD8}}或^ {CD9}}。