我有两个班,Person和Employee。Employee延伸Person。
我有一个Person从存储中读取 a 的方法,并且正在编写读取Employee.
我想重用我必须的方法Person来读取相同的属性Employee,而不复制粘贴代码,但似乎找不到方法。
public Person getPersonFromStorage() {
Person person = new Person();
// ... logic
return person;
}
public Employee getEmployeeFromStorage() {
Employee employee = new Employee();
// ... logic for employee-specific fields
// I want to read the fields inherited from Person here
return employee;
}
我无法转换从 检索Person的getPersonFromStorage内容,因为它不是Employee. 它可能是,因为它也不是另一个亚型,但它不是。
我可以执行以下操作:
public Person getPersonFromStorage(Person person) {
if(person==null) { person = new Person(); }
// ... logic
return person;
}
public Employee getEmployeeFromStorage() {
Employee employee = (Employee) getPersonFromStorage(new Employee());
// ... logic for employee-specific fields
return employee;
}
但如果可以的话,我想避免这种复杂性。我觉得我忽略了一些基本的东西。有没有更好的方法来解决这个问题?