通过超类引用变量指向子类对象

时间:2013-08-07 20:45:50

标签: java inheritance

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

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

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

3 个答案:

答案 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)

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