我有一個小型項目,我正在使用繼承和多態。我有一個Employee類型的ArrayList,它包含Hourly和Salary員工對象。我希望能夠使用for循環在Hourly類中調用calcPay
函數,前提是Employee類型的ArrayList中的對象是Hourly員工。該行在arraylist中使用多態性調用子方法
System.out.println("Wage: " e.calcPay());
給出錯誤The method calcPay() is undefined for type employee
。你如何低調對象?我在很多論壇上看過,我找不到一個允許我內聯或不寫一個抽象方法的選項,我不得不將其包含在Employee的所有子類中。任何有識之士將不勝感激。
public class Driver {
public static void main(String[] args) {
ArrayList<Employee> list = new ArrayList<Employee>();
Employee emp1 = new Hourly("Hourly Emp", "123 E Center", "555-555-5555", 00001, "123-45-6789", 12.75);
Employee emp2 = new Salary("Salary Emp", "123 E Center", "555-555-5555", 00001, "123-45-6789");
list.add(emp1);
list.add(emp2);
for(Employee e : list){
if(e instanceof Hourly)
{
System.out.println("Wage: " e.calcPay());
}
}
}
public abstract class Employee {
private String name, address, phone, ssn;
private int empNo;
Employee(String name, String address, String phone, int empNo, String ssn)
{
this.name = name;
this.address = address;
this.phone = phone;
this.empNo = empNo;
this.ssn = ssn;
}
}
public class Hourly extends Employee {
private double wage;
Hourly(String name, String address, String phone, int empNo, String ssn, double wage)
{
super(name, address, phone, empNo, ssn);
this.wage = wage;
}
public double calcPay(double hours)
{
return wage * hours;
}
}
跟隨這個問題 - 它可以內聯嗎?如果不是,因爲我在同一時間學習C++,是「小時」類似的參考,即:沒有佔用堆空間? – Wheeler
是的,小時是不佔用堆空間的引用,佔用堆棧空間。我不確定你的意思是「內聯可以做什麼」 – kosa
內聯是如果它可以在同一行代碼中完成,而不必創建新的引用。 – Wheeler