A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

smm19930312

中级黑马

  • 黑马币:34

  • 帖子:15

  • 精华:0

© smm19930312 中级黑马   /  2014-2-23 22:06  /  950 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Employee e = null;       

if(tokens[0].equals("E")) {
e = new SalaryEmployee(id, firstName, lastName, title, annualSalary);
} else if(tokens[0].equals("S")) {
e = new Staff(id, firstName, lastName, title, hourlyPayRate, hoursWorked); 、
} else if(tokens[0].equals("T")) {
e = new Temporary(id, firstName, lastName, title, hourlyPayRate, hoursWorked);
}

其中父类是Employee,我用new实例化的对象都是子类,我就想问一下在这种情况下怎么调用子类的方法?
谢谢!这里是要用到子类方法的地方。红色的都是子类里的方法。
for(Employee e : payroll) {
//format their information
sb.append(String.format("%-8s %-20s %-10s %-30s $%8.2f $%8.2f $%8.2f\n",
e.getID(), e.getName(), e.getType(), e.getTitle(), e.getGross(), e.getTax(), e.getNetpay()));
}

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

1 个回复

倒序浏览
可以强制向下转型:
例如
Employee e = new SalaryEmployee();//转型前父类引用必须指向子类对象
SalaryEmployee  s = (SalaryEmployee)e;//将父类引用强制转成子类引用

这样s就可以调用子类方法了

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马