java 使用operator的instance从父引用访问子类变量是不是不好

cclgggtu  于 2024-01-05  发布在  Java
关注(0)|答案(1)|浏览(169)

我有一个类Eg Person,它有一些参数Eg name,age。现在我想添加一些其他参数Eg employment。这些新参数只对应用程序的一种模式有用。
所以我创建了一个子类Employee extends Person。通过传递Person引用来重用所有的公共代码。Person p = new Employee();
但是我想访问员工特定的参数。我如何才能实现这一点?
我想添加instanceOf和强制转换到Employee,但它会导致许多if else条件。我还能做什么?我如何重新构造以重用现有代码,但仍然在应用程序的一种模式中使用新参数。

cld4siwp

cld4siwp1#

我建议在这种情况下尽可能使用合成
您可以使用组合来代替继承。创建一个单独的Employment类,并将其作为Person类中的字段添加。这样,您可以在需要时访问雇佣详细信息,对于非雇员,它可以为null。类似于

  1. class Employment {
  2. // employment details
  3. }
  4. class Person {
  5. // ...
  6. private Employment employment;
  7. // ...

字符串
}
或者使用接口来实现这一点,如下所示

  1. interface Employable {
  2. String getEmploymentDetails();
  3. }
  4. class Employee extends Person implements Employable {
  5. // ...
  6. @Override
  7. public String getEmploymentDetails() {
  8. // return employment details
  9. }
  10. }

展开查看全部

相关问题