我一直在想,有没有办法为一个特定类的每个对象调用一个方法?
假设我有个课:
public class Employee {
private double salary;
private boolean hired;
public double getSalary() {return salary;}
public double setSalary(double x) {salary=x;}
public boolean getHired() {return hired;}
public boolean setHired(boolean check) {hired=check;}
}然后,我声明了另一个扩展Employee的类,例如Boss (因为Boss也是雇员,对吧)
因此,他继承了雇员的“获得”和“设定”,也有可能解雇雇员:
public class Boss extends Employee {
public void fireTheGuy(Employee unluckyYou) {
boolean temp;
temp=false;
unluckyYou.setHired(temp);
unluckyYou.setSalary(0.0);
}这主要允许:
public static void main(String args[])
{
Employee worker1 = new Employee();
Employee worker2 = new Employee();
Boss slacker = new Boss();
slacker.fireTheGuy(worker1);
slacker.fireTheGuy(worker2);
}但如果我有大约100名员工而老板却想把他们全部解雇呢?如何调用此方法(这是否可以通过某种循环实现?)
发布于 2017-10-16 16:17:20
您可以让所有员工在公共的static List中注册自己。然后,当老板被告知解雇每个人时,他只是按单子走。
static List<Employee> allEmployees = new ArrayList<>();
public class Employee {
private double salary;
private boolean hired;
public Employee() {
// All employees must register themselves in the allEmployees list.
allEmployees.add(this);
}
public double getSalary() {return salary;}
public double setSalary(double x) {salary=x;}
public boolean getHired() {return hired;}
public boolean setHired(boolean check) {hired=check;}
}
public class Boss extends Employee {
public void fireTheGuy(Employee unluckyYou) {
unluckyYou.setHired(false);
unluckyYou.setSalary(0.0);
}
public void fireThese(Iterable<Employee> fireThem) {
for ( Employee e : fireThem ) {
fireTheGuy(e);
}
}
public void fireEveryone() {
fireThese(allEmployees);
}
}发布于 2017-10-16 16:18:21
这是你可以做的代码的一个例子。
List<Employee> employees=new ArrayList<Employee>();
employees.add(worker1);
employees.add(worker2);
for(Employee worker:employees){
slacker.fireTheGuy(worker);
}但是,就像注释中提到的那样,您应该尝试理解这个示例背后的所有概念。
https://stackoverflow.com/questions/46774575
复制相似问题