Employee[] staff = new Employee[3];

解决方案 »

  1.   

    报什么错误。
    1。为什么staff[0].setBonus()不能执行?
                而staff[0].getsalary()可以重载!
    应该可以执行,报什么错误。? 2。所谓超(父)类的对象变量指向子类对象,是不是仅指向从超类中继承下来            的那一部分?不是。
    3。重载后的方法属于超类还是子类?
    这就是RTTI(run time type identification)
      

  2.   

    1。为什么staff[0].setBonus()不能执行?
                而staff[0].getsalary()可以重载!
    应该可以执行,报什么错误。?
    --
    不能够编译的,子类向上转型到父类后,实例可以调用父类本身的方法(如果有子类覆盖了该方法,则自动调用子类的方法,就是staff[0].getsalary()可以执行的原因),但是不能够调用子类非override的方法(如staff[0].setBonus())2。所谓超(父)类的对象变量指向子类对象,是不是仅指向从超类中继承下来            的那一部分?
    --
    应该是被子类覆盖的方法加上没有被覆盖的父类的方法。3。重载后的方法属于超类还是子类?
    --
    重载后的方法属于子类,但是当该子类实例转换成它的父类时,该实例调用的将是子类的方法。这样也就有了“多态”--父类调用子类的方法。