问一个关与java中父类和子类的问题,想请教一下各位大大

刚刚起步的计算机小白 2014-02-13 08:36:52
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()));
}
...全文
674 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
brvel 2014-02-17
  • 打赏
  • 举报
回复
没有看见super(),应该就是子类的吧
crackajack123 2014-02-13
  • 打赏
  • 举报
回复
亲 你这样写就是调用的子类的方法啊
teemai 2014-02-13
  • 打赏
  • 举报
回复
引用 8 楼 u013591284 的回复:
[quote=引用 2 楼 huxiweng 的回复:] 实例化的子类,直接用e调用子类方法即可
我直接调用了,可是报错了啊?[/quote] 报什么错?子类有这个方法吗?
  • 打赏
  • 举报
回复
引用 2 楼 huxiweng 的回复:
实例化的子类,直接用e调用子类方法即可
我直接调用了,可是报错了啊?
石头和风 2014-02-13
  • 打赏
  • 举报
回复
比较基础的知识
BLP401737445 2014-02-13
  • 打赏
  • 举报
回复
子类被调用的方法先在父类里声明
朦_胧 2014-02-13
  • 打赏
  • 举报
回复
实例化了子类的对象,直接调用子类的方法即可。。。
放飞的西瓜 2014-02-13
  • 打赏
  • 举报
回复
首先你写好父类,父类中要定义一些公用方法,子类要用关键字extends继承,然后重写或者覆盖父类中的你要用到的方法,然后New对象之后,直接调用就可以了。
remember1989 2014-02-13
  • 打赏
  • 举报
回复
这里涉及到的是设计方面的问题。从“sb.append(...)”看,你希望将 Employee 对象转化成一个字符串。那么 Employee 类就应该有一个比如说 getDescription() 方法。

public abstract class Employee {
  ...

  public abstract String getDescription();
}
这个方法在不同的子类中有不同的实现,比如 Staff:
public class Staff extends Employee {

  ...

  @Override
  public String getDescription() {
    return 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());
  }
}
而在你的循环中,你只要调用 Employee 的 getDescription() 就可以了。这是普遍使用的解决办法。
teemai 2014-02-13
  • 打赏
  • 举报
回复
实例化的子类,直接用e调用子类方法即可
msj100ff 2014-02-13
  • 打赏
  • 举报
回复
父类需要有子类方法的声明或实现 子类覆盖父类方法 然后调用

62,623

社区成员

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

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