【问题标题】:How do I implement these super class methods?如何实现这些超类方法?
【发布时间】:2017-12-09 23:38:19
【问题描述】:

我应该做的: 编写一个 java 程序来展示继承概念,其中 Employee 是超类,Manager 是子类。遵循以下类结构: - 员工类

变量:

  1. 员工编号
  2. 员工姓名
  3. 员工工资

Constructor - 使用它来初始化函数上面的所有变量

Display() – This displays all the 3 variable values.
setSalary() – This sets the salary variable.
getSalary() – This gets the salary variable.

这就是我目前所拥有的

public class Employee {
    private int employeeNumber;
    private String employeeName;
    private double employeeSalary;

    public Employee(int employeeNumber, String employeeName, double employeeSalary) {
    this.employeeNumber = employeeNumber;
    this.employeeName = employeeName;
    this.employeeSalary = employeeSalary;
    }
}

我的问题是如何实现这三种方法? 他们只是标准的getter和setter吗? 我不熟悉显示功能,如果有人可以帮忙 谢谢!

【问题讨论】:

  • 再创建一个名为Manager extends Employee 的类,因为每个经理都是雇员,但每个雇员都不是经理。仅在 Employe 中创建那些在员工之间和经理之间通用的方法。
  • 只针对 manager 的函数,在 manager 类中创建这些函数。
  • 这个显示函数是否正确@LuaiGhunim public void display() { System.out.println(employeeSalary + employeeName +employeeNumber); ); }
  • 我在下面回答并添加了一些额外的 getter 和 setter 顺便说一句,当我们说 new 这意味着我们创建了一个新对象时,你应该记住
  • 请不要通过破坏您的帖子为人们增加工作量。通过在 Stack Exchange (SE) 网络上发帖,您已在 CC BY-SA 3.0 license 下授予 SE 分发该内容的不可撤销的权利(即无论您未来的选择如何)。根据 SE 政策,帖子的非破坏版本是分发的版本。因此,任何破坏行为都将被撤销。

标签: java methods superclass


【解决方案1】:

你真的很亲密。您需要创建经理类并扩展员工类。但首先让我们添加描述的方法来设置工资和显示所有字段!

员工类: display() 方法将字段连接在一起,按行分隔。

public class Employee {

    private int employeeNumber;
    private String employeeName;
    private double employeeSalary;

    public Employee(int employeeNumber, String employeeName, double employeeSalary){
        this.employeeNumber=employeeNumber;
        this.employeeName=employeeName;
        this.employeeSalary=employeeSalary;
    }


    public void display(){
        System.out.println("Employee Number: "+ employeeNumber +"\n"
                + "Employee Name: " + employeeName + "\n" 
                + "Employee Salary: "  + employeeSalary);
    }

    public double getEmployeeSalary() {
        return employeeSalary;
    }

    public void setEmployeeSalary(double employeeSalary) {
        this.employeeSalary = employeeSalary;
    }

}

经理类:根据一般知识,我假设经理也可以有多个员工。 因此,在此类中,您将拥有经理的特定方法,例如添加新员工,或显示为给定经理工作的员工。

public class Manager extends Employee {


    List<Employee> subordinates;
    public Manager(int employeeNumber, String employeeName, double employeeSalary) {
        super(employeeNumber, employeeName, employeeSalary);
        subordinates = new ArrayList<>();
    }


    public void displayEmployees(){
        for(Employee employee: subordinates){
            employee.display();

            // just print an empty line - so its prettier
            System.out.println();
        }
    }

    public void addNewEmployee(Employee employee){
        subordinates.add(employee);
    }

    public List<Employee> getSubordinates() {
        return subordinates;
    }

    public void setSubordinates(List<Employee> subordinates) {
        this.subordinates = subordinates;
    }
}

测试:请注意,Manager 继承了 Employee 类的所有方法,这就是为什么在 Manager 类中不需要重写方法,但当然可以这样做添加新功能。

public class Main {

    public static void main(String[] args) {

        Manager manager = new Manager(11111, "Elon Musk", 42344);
        manager.display();


        // lets make some employees who work for the above manager

        Employee employeeOne = new Employee(324, "Bob Den", 3522);
        Employee employeeTwo = new Employee(44, "Tim Pipe", 4234 );
        Employee employeeThree = new Employee(42, "Asif Blar", 4321);

        // lets add the new employees to the managers list of employees ( this can further be refactored )

        manager.addNewEmployee(employeeOne);
        manager.addNewEmployee(employeeTwo);
        manager.addNewEmployee(employeeThree);

        // lets display all the employees who work for the manager
        manager.displayEmployees();


        // lets give the manager a 10 % raise
        double employeeSalary = manager.getEmployeeSalary();
        manager.setEmployeeSalary(employeeSalary +(employeeSalary /10));

        // lets print out the managers hefty new salary
        manager.display();

    }
}

【讨论】:

  • 经理中员工的构造函数?这是为什么呢?
  • 他会得到一个错误,这不是创建经理的正确方法,因为经理可以有更多的属性或几个不同的属性。
  • 使用一个构造函数,您只能创建 Employe 而不是经理,因为 Manager 可以具有额外的属性,您可以在创建经理时提供这些属性。简单来说,每个经理都是员工,但每个员工都不是经理。
  • 好的,我请你创建一个带有两个额外属性的 peon 类,并使其成为 Employee 的子类,你需要在两个不同的对象之间做出区别。
  • 为 Peone 创建 Employee peon= new Employe(...) 而为 Manager 创建 Employe manager = new Employe(..) 根本没有意义。
猜你喜欢
  • 2020-07-24
  • 2013-08-01
  • 2019-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多