Member 13240253 Ответов: 2

У меня есть домашний вопрос, с которым мне нужна помощь; наследование java


Итак, мне нужна помощь с заданием, которое у меня есть. Я включу этот вопрос, а затем свои занятия.

Первый проект программирования включает в себя написание программы, которая вычисляет заработную плату для набора сотрудников разных типов. Эта программа состоит из четырех классов.

1. первый класс-это класс сотрудника, который содержит имя сотрудника и ежемесячную зарплату, которая указывается в целых долларах. Он должен иметь три метода:
A. конструктор, который позволяет инициализировать имя и ежемесячную зарплату.
б) метод annualSalary, который возвращает зарплату за целый год.
c. метод toString, который возвращает строку, содержащую имя и месячную зарплату, соответствующим образом помеченную.

2. Класс employee имеет два подкласса. Первый-продавец. У него есть дополнительная переменная экземпляра, которая содержит годовые продажи в целых долларах для этого продавца. Он должен иметь те же три метода:

A. конструктор, который позволяет использовать имя, ежемесячную зарплату и годовые продажи.
инициализированный.

б. переопределенный метод annualSalary, который возвращает зарплату за целый год. То
заработная плата продавца состоит из базовой заработной платы, рассчитанной из месячной заработной платы
плюс комиссионные. Комиссия рассчитывается как 2% от годового дохода этого продавца.
продажи. Максимальная комиссия, которую может заработать продавец, составляет 20 000 долларов.

c. переопределенный метод toString, возвращающий строку, содержащую имя,
месячная зарплата и годовой объем продаж, соответственно обозначенные.

3. второй подкласс-исполнительный. Он имеет дополнительную переменную экземпляра, которая
отражает текущую цену акций. Он должен иметь те же три метода:

A. конструктор, который позволяет использовать имя, ежемесячную зарплату и цену акций.
инициализированный.

б. переопределенный метод annualSalary, который возвращает зарплату за целый год. То
заработная плата руководителя состоит из базового оклада, рассчитанного исходя из месячного
зарплата плюс премия. Бонус составляет 30 000 долларов, если текущая цена акций больше
больше 50 долларов и ничего больше.

c. переопределенный метод toString, возвращающий строку, содержащую имя,
месячная зарплата и цена акций, соответственно обозначенные.

4. наконец, должен быть четвертый класс, содержащий основной метод. Она должна
считывание информации о сотрудниках из текстового файла. Каждая строка текстового файла будет
представляйте информацию для одного сотрудника в течение одного года. Пример того, как
текстовый файл будет выглядеть так, как показано ниже:

2014 Сотрудник Смит, Джон 2000
2015 Продавец Джонс, Билл 3000 100000
2014 Исполнительный Буш, Джордж 5000 55

Год - это первый элемент данных в строке. Файл будет содержать информацию о сотрудниках только за два года: 2014 и 2015. Далее следует тип сотрудника, за которым следует имя сотрудника и ежемесячная зарплата. Для продавцов конечная стоимость-это их годовой объем продаж, а для руководителей-цена акций. По мере чтения сотрудников должны создаваться объекты сотрудников соответствующего типа, которые должны храниться в одном из двух массивов в зависимости от года. Вы можете предположить, что файл будет содержать не более десяти записей сотрудников за каждый год и что данные в файле будут отформатированы правильно.
Как только все данные о сотрудниках будут считаны, на консоли должен появиться отчет за каждый из двух лет. Каждая строка отчета должна содержать все исходные данные, предоставленные по каждому сотруднику вместе с
2
годовой оклад этого работника за год. Для каждого из этих двух лет должна быть рассчитана и отображена средняя заработная плата всех сотрудников за этот год.

Мой код до сих пор:

public class Employee {
    private String name;
    private double monthly;
    
    public double annualSalary(double monthly) {
        return monthly * 12;
    }
            
    public String toString() {
        return "Name: " + name + "  Monthly Salary: $" + monthly;
    }
        
}

/* File name: Salesman.java */

package project.pkg1;

public class Salesman extends Employee {
    private double annual;
    
    public Salesman(String name, double monthly, double annual) {
        super(name, monthly);
        annual = monthly * 12;
    }

    public String toString() {
        return "Name: " + name + "  Monthly Salary: $" + monthly + "  Annual Salary: $" + salary;
    }
            
}

/* File name: Executive.java */

package project.pkg1;

public class Executive extends Employee {
    private double stock;
    
    public Executive(string name, double monthly, double stock) {
        super(name, monthly) 
    }
}


Что я уже пробовал:

Мой компилятор показывает ошибку в строках "супер". Ошибка заключается в следующем:

сотрудник в конструктор класса employee не может быть применен для данного типа:

требуется: никаких аргументов
найдено: строка, двойная
причина: фактические и формальные аргументы различаются по длине

0x01AA

> "мой компилятор показывает ошибку в строках "супер" "
Может быть, вы также могли бы сказать нам, что это за сообщение об ошибке?

Member 13240253

сотрудник в конструктор класса employee не может быть применен для данного типа:

требуется: никаких аргументов
найдено: строка, двойная
причина: фактический и формальный аргумент различаются по длине

0x01AA

Пожалуйста, используйте Редактирование вопроса[^] и добавьте эту информацию к вашему вопросу.

Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.

2 Ответов

Рейтинг:
2

Kornfeld Eliyahu Peter

Кажется, на занятиях ты не уделяешь много внимания... Все дело в наследстве и его правилах...
У вас есть класс Employee с конструктором по умолчанию,который не имеет никаких параметров... (это значение по умолчанию, потому что вы его не создавали).
Теперь у вас есть другой класс, называемый продавец, который наследуется (распространяется на Яве) работника с Открытый конструктор, который принимает 3 параметра... Этот конструктор вызывает конструктор базового класса (Employee) по super и передает ему параметры, которые он получил... Но у Employee нет конструктора, который мог бы принимать параметры (см. выше)...
Вот что это значит, когда компилятор писал вам: фактические и формальные аргументы различаются по длине...
фактический - параметры, которые вы передаете сейчас (string, double)
формальный - чего следует ожидать в соответствии с определением (void)

Мы можем пойти дальше, но я думаю, что это тот момент, когда это становится вашей домашней работой...


Рейтинг:
0

Richard MacCutchan

Видеть Учебные Пособия По Java™ [^].