#java
#java
Вопрос:
class Employee extends Person {
private double salary;
private int departmentId;
public void setSalary(double s) {
this.salary = s;
}
public double getSalary() {
return salary;
}
public void setDepartmentId(int i) {
this.departmentId = i;
}
public int getDepartmentId() {
return departmentId;
}
}
Класс отдела
class Department extends Employee {
private String[] department[];
public String[][] getDepartment() {
return department;
}
Я пытался отобразить что-то вроде, если пользователь вводит 1, выделенный 1 в массиве что-то напечатает. Но каждый раз, когда я использую этот синтаксис
Employee[] e1 = new Employee[6];
e1[1] = "asd";
Пожалуйста, помогите. я вроде как получаю несоответствие типа ошибки: не удается преобразовать строку в employee
Комментарии:
1. Вам нужно присвоить экземпляру Employee значение e1[1], а не строку.
2. Да, но я хочу сохранить строку в моем массиве
3. Тогда вам нужно использовать a
String[]
, Java не может волшебным образом преобразовывать типы4. Ваша структура классов не имеет смысла. Мы читаем «extends» как «is a»: затем вы пишете, что Отдел является сотрудником. Я думаю, вы слишком далеко продвинулись в своей кривой обучения программированию. Наберитесь терпения и пошагово следуйте некоторым курсам по основам программирования или учебным пособиям.
5. Я просто хочу использовать эту штуковину getDepartment, потому что я думаю, что это то, чего хочет от нас мой профессор.
Ответ №1:
Я думаю, я понимаю, что вы пытаетесь сделать. Прежде всего Department
, не должно расширяться Employee
. Это имело бы смысл только в том случае, если в вашей квартире был какой-то сотрудник. Во-вторых, ваш массив department представляет собой массив массивов, потому что вы используете квадратные скобки 2 раза. Если вы просто сделаете его обычным массивом, вы можете использовать его для сохранения всех названий отделов. Теперь вам нужен только способ установить эти отделы и конструктор для создания объекта класса, и ваш класс отдела готов:
class Department {
private String[] department;
public Department() { }
public String[] getDepartment() {
return department;
}
public void setDepartment(String[] newDepartment) {
department = newDepartment;
}
}
Ваш класс Employee также должен получить конструктор, чтобы вы могли создать объект класса:
public Employee() { }
Теперь вам нужно создать массив строк со всеми отделами в нем и передать его вашему классу. Затем вы можете использовать индекс этих отделов в качестве идентификатора отдела в employee:
String[] departmentNames = new String[6];
Department departmentManager = new Department();
Employee e1 = new Employee();
departmentNames[0] = "xyz";
departmentNames[1] = "asd";
//...
departmentManager.setDepartment(departmentNames);
e1.setDepartmentId(1);
Теперь departmentId
in employee
показывает, какая запись массива в department является его отделом, и вы можете показать это, вызвав:
System.out.println(departmentManager.getDepartment()[e1.getDepartmentId()]);