高手进---几个小问题!!!

gggosling 2004-09-04 12:17:49
/*一个员工类Employee,一个经理类Manager*/
class Test
{
public static void main(String[] args)
{
Employee[] staff=new Employee(3);
boss=new manager();
staff[0]=boss;
staff[0].getsalary();
staff[0].setBonus();
...
}
}
class Employee
{
double getsalary()
{
...
}
}
class Manager extends Employee
{
double getsalary()
{
...
} /*重定义getsalary()*/

double setBonous()
{
...
} /*新增加的函数*/

}

我想问的是:1。为什么staff[0].setBonus()不能执行?
而staff[0].getsalary()可以重载!
2。所谓超(父)类的对象变量指向子类对象,是不是仅指向从超类中继承下来 的那一部分?
3。重载后的方法属于超类还是子类?
...全文
139 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
JeromeLiu 2004-09-04
  • 打赏
  • 举报
回复
1。为什么staff[0].setBonus()不能执行?
而staff[0].getsalary()可以重载!
应该可以执行,报什么错误。。。。?
--
不能够编译的,子类向上转型到父类后,实例可以调用父类本身的方法(如果有子类覆盖了该方法,则自动调用子类的方法,就是staff[0].getsalary()可以执行的原因),但是不能够调用子类非override的方法(如staff[0].setBonus())

2。所谓超(父)类的对象变量指向子类对象,是不是仅指向从超类中继承下来 的那一部分?
--
应该是被子类覆盖的方法加上没有被覆盖的父类的方法。

3。重载后的方法属于超类还是子类?
--
重载后的方法属于子类,但是当该子类实例转换成它的父类时,该实例调用的将是子类的方法。这样也就有了“多态”--父类调用子类的方法。
whbxm2000 2004-09-04
  • 打赏
  • 举报
回复
报什么错误。。。。
1。为什么staff[0].setBonus()不能执行?
而staff[0].getsalary()可以重载!
应该可以执行,报什么错误。。。。?

2。所谓超(父)类的对象变量指向子类对象,是不是仅指向从超类中继承下来 的那一部分?

不是。
3。重载后的方法属于超类还是子类?
这就是RTTI(run time type identification)
pleonheart 2004-09-04
  • 打赏
  • 举报
回复
Employee[] staff = new Employee[3];

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧