Могу ли я заменить функцию получения в конструкторе (например, супер) и как? - PullRequest
0 голосов
/ 02 апреля 2019

Каков лучший способ создания объекта подкласса без использования функции-получателя в качестве параметра в его конструкторе?

Я сделал это с помощью функции-получателя

/*constructor(subclass)*/
public HourlyEmployee(String name, int age, String SSN,int hoursWorked,double hourlyWages)
{
    super(name,age,SSN);
    this.hoursWorked = hoursWorked;
    this.hourlyWages = hourlyWages; 
}

/*main*/
public class Run
{
    public static void main(String[] arggs)
    {
        Employee e = new Employee("ABC", 50, "XYZ7009205");
        HourlyEmployee h = new HourlyEmployee(e.getName(), e.getAge(), e.getSSN(), 5, 10.0);

        System.out.println(h);  
    }
}

Ответы [ 3 ]

0 голосов
/ 02 апреля 2019

Просто:

Employee e = new HourlyEmployee("ABC", 50, "XYZ7009205", 5, 10.0);
0 голосов
/ 02 апреля 2019

Как отвечает Joop Eggen, когда вы вызываете подкласс, вам не нужно беспокоиться о главном классе этого подкласса, потому что вы уже реализуете методы этого основного класса в своем подклассе.Таким образом, вызов подкласса также будет включать методы основного класса. Так будет:

 Employee e = new Employee("ABC", 50, "XYZ7009205", 5, 10.0);

 System.out.println(e);
0 голосов
/ 02 апреля 2019

Может быть, вы хотите использовать Наследование и написать HourlyEmployee как:

public class HourlyEmployee extends Employee {

    public HourlyEmployee(String name, int age, String SSN, int hoursWorked, double horlyWages) {
        super(name,age,SSN);
        this.hoursWorked=hoursWorked;
        this.hourlyWages=hourlyWages; 
    }

}

, или вы можете использовать Pattern Decorator как:

public class HourlyEmployee {

    public HourlyEmployee(Employee employee, int hoursWorked, double horlyWages) {
        this.employee = employee;
        this.hoursWorked=hoursWorked;
        this.hourlyWages=hourlyWages; 
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...