当我们可以用超类引用变量指向子类的对象时,为什么我们不能用超类的引用变量访问子类方法..
例如。 以下代码给出错误..
class Parent
{
int a;
}
class Child extends Parent
{
void func()
{
System.out.println("abc");
}
public static void main(String s[])
{
Parent a=new Child();
a.func();
}
}
答案 0 :(得分:3)
我问你一个问题,你有没有看到儿子有一个孩子,这个孩子真的是他的父亲?!!听起来很疯狂哈哈!
所以,class Parent extends Child
不是编译错误,而是将其与实际比较,是否可能?
所以,您的代码很好,但将其更改为:
class Parent
{
void func()
{
System.out.println("abc");
}
}
class Child extends Parent
{
public static void main(String s[])
{
Parent a=new Child();
a.func();
}
}
答案 1 :(得分:0)
您不能将Parent类分配给子类。原因是子类可能具有Parent中不存在的方法或属性,因此您将无法调用子类方法。
答案 2 :(得分:0)
我看到的唯一问题是你没有任何构造函数,但我认为你没有粘贴整个代码。