Думаю, вы ответили на свой вопрос. Поскольку ни один из двух классов не является таким же, вам нужно удалить один объект и сделать другой, если вы меняете объект из одной формы в другую («Инженер-менеджер»). Рассмотрим приведенный ниже пример для получения информации. Позвольте сотруднику быть интерфейсом. Классы инженера и менеджера реализуют Employee.
interface Employee
{
void attendsMeeting();
void reportsWorkDone();
void inputsHoursWorked();
}
class Manager implements Employee
{
String name;
int emp_id; //and more fields related to Manager
public void attendsMeeting()
{
//Implements the method
}
public void reportsWorkDone()
{
//Implements the method
}
public void inputsHoursWorked()
{
//Implements the method
}
public void managesThings()
{
//Method specific to Manager class
}
}
class Engineer implements Employee
{
String name;
int emp_id; //and more fields related to Engineer
public void attendsMeeting()
{
//Implements the method
}
public void reportsWorkDone()
{
//Implements the method
}
public void inputsHoursWorked()
{
//Implements the method
}
public void developsApplication()
{
//Method specific to Engineer class
}
}
Из приведенного выше кода вы можете видеть, что Инженер и Менеджер - это два разных объекта. Они внедрили Employee, чтобы получить некоторые распространенные методы, которые унаследованы от Employee. Кроме того, они также получили методы, характерные для обоих подклассов. Даже унаследованные методы в обоих классах будут иметь такую же реализацию. Так как эти два являются разными объектами, вы должны удалить объект «Инженер» и создать объект «Менеджер» для конкретного сотрудника (человека), если он продвинут.
Не имеет смысла, что 'Engineer' или' Manager' являются * супер * классом 'Employee'. И для вашего вопроса вы можете легко построить новый «Менеджер» из уже существующего «Engineer»;) – Maroun
Это решение. Другим было бы использование делегирования вместо наследования. Каждый сотрудник будет иметь роль, а Role будет иметь два подкласса: «Инженер и менеджер». Когда Инженер, проектируя и создавая полезные вещи, понижается до Менеджера и проходит все свои дни на листах Excel и бессмысленных встречах, он получит новую роль :-) –
На практике «объекты» относительно недолговечны (обычно короче, чем срок службы программы), поэтому «сотрудник» будет создан как * менеджер * или инженер - «продвижение» не будет проблемой. – FoggyDay