首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对每个创建的对象调用一个方法

对每个创建的对象调用一个方法
EN

Stack Overflow用户
提问于 2017-10-16 16:07:49
回答 2查看 141关注 0票数 2

我一直在想,有没有办法为一个特定类的每个对象调用一个方法?

假设我有个课:

代码语言:javascript
复制
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也是雇员,对吧)

因此,他继承了雇员的“获得”和“设定”,也有可能解雇雇员:

代码语言:javascript
复制
public class Boss extends Employee {

public void fireTheGuy(Employee unluckyYou) {
    boolean temp;
    temp=false;
    unluckyYou.setHired(temp);
    unluckyYou.setSalary(0.0);
}

这主要允许:

代码语言:javascript
复制
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名员工而老板却想把他们全部解雇呢?如何调用此方法(这是否可以通过某种循环实现?)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-16 16:17:20

您可以让所有员工在公共的static List中注册自己。然后,当老板被告知解雇每个人时,他只是按单子走。

代码语言:javascript
复制
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);
    }
}
票数 1
EN

Stack Overflow用户

发布于 2017-10-16 16:18:21

这是你可以做的代码的一个例子。

代码语言:javascript
复制
List<Employee> employees=new ArrayList<Employee>();

employees.add(worker1);
employees.add(worker2);

for(Employee worker:employees){
    slacker.fireTheGuy(worker);
}

但是,就像注释中提到的那样,您应该尝试理解这个示例背后的所有概念。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46774575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档