【发布时间】:2020-05-06 16:37:26
【问题描述】:
例如,
向量栈 = new Stack(); // 为什么即使将运行时对象创建为堆栈,Stack 类方法也不可用
stack.push(2); // 错误提示没有找到方法
//vector 是父引用...根据多态性这一定是对的..?
【问题讨论】:
-
如果将其定义为
Vector,则可以将其用作向量而不是堆栈。 -
你应该有一些关于继承和变量转换的教程
-
当您将变量声明为超类时,它将是超类类型,您可以直接使用它,仅此而已。 Stack 知道 Vector,但 Vector 不知道 Stack。
-
@JoakimDanielson:你的措辞是错误的。它不是“超类对象”,因为 object 仍然是
Stack。它是Vector类型的变量。这种确切的区别非常重要,因为它是这种误解的根源。
标签: java