-6

当我们可以用超类引用变量指向子类的对象时,为什么我们不能用超类的引用变量访问子类方法..

例如。以下代码给出错误..

    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();
        }
    }
4

3 回答 3

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();
    }
}
于 2013-08-07T20:53:11.067 回答
0

我看到的唯一问题是您没有任何构造函数,但我假设您没有粘贴整个代码。

于 2013-08-07T20:52:29.480 回答
0

您不能将父类分配给子类。原因是子类可能具有 Parent 中不存在的方法或属性,因此您将无法调用子类方法。

于 2013-08-07T20:51:28.073 回答