子类对象只能从超类对象继承某些参数吗?

时间:2017-11-01 01:36:06

标签: java inheritance polymorphism super

我有一个抽象类Employee,它是CasualEmployee的超类。 Employee有name,baseSalary作为参数,而CasualEmployee没有baseSalary。使用super?

是否可以将CasualEmployee对象转换为Employee对象
public Employee(String name, double baseSalary){
this.name=name;
this.baseSalary = baseSalary;   
    }

public CasualEmployee(String name, double hourlyRate, int hoursWorked) {
  //insert super();

   this.hourlyRate = hourlyRate;
   this.hoursWorked = hoursWorked;

   }

1 个答案:

答案 0 :(得分:0)

正如之前的评论中所述,您明确存在设计问题。如果你要采用继承方法,你应该记住,子类应该比它们各自的超类更强"专门的" !因此,所有子类都应该从其父类继承属性,添加一些或在必要时更改其他类的行为。但是你永远不应该在子类不应该有来自父类的某些属性/方法的情况下结束。 如果是这种情况,这将打破概括< - >专业化语义原则,基于继承本身。

在您的示例中,解决方案是从Employee类中删除baseSalary,并在继承树中与CasualEmployee相同的级别创建另一个子类(例如,BasedPayEmployee)。

Generalization, Specialization, and Inheritance