【发布时间】:2014-08-14 14:13:18
【问题描述】:
在java中,我们可以将超类Object传递给子类引用吗?
我知道这是一个奇怪的问题/实际上不可行, 但我想了解这背后的逻辑 为什么java中不允许。
class Employee {
public void met1(){
System.out.println("met1");
}
}
class SalesPerson extends Employee
{
@Override
public void met1(){
System.out.println("new met1");
}
public void met2(){
System.out.println("met2");
}
}
public class ReferenceTest {
public static void main(String[] args) {
SalesPerson sales = new Employee(); // line 1
sales.met1(); // line 2
sales.met2(); // line 3
}
}
如果 Java 允许编译第 1 行会发生什么? 哪里会出问题?
欢迎任何输入/链接。
【问题讨论】:
-
这没有意义。如果允许,您可能会拥有您希望存在但实际上并不存在的字段/方法。如果允许的话,我认为语言设计者可能已经被锁在他们无法造成更多伤害的地方。
-
你预计会发生什么?
标签: java inheritance reference polymorphism