我有两个班,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;
}
但如果可以的话,我想避免这种复杂性。我觉得我忽略了一些基本的东西。有没有更好的方法来解决这个问题?