我有一个抽象类 Employee,它是 CasualEmployee 的父类(super class)。 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;
}
最佳答案
正如之前的评论所述,您显然存在设计问题。如果您打算采用继承方法,您应该记住子类应该比它们各自的父类(super class)更加“专业化”!因此,所有子类都应该继承其父类的特性,必要时添加一些特性或更改其他一些特性。但是,您永远不应该陷入子类不应该具有父类的某些属性/方法的情况。 如果是这种情况,这将打破继承本身所依据的泛化<->特化语义原则。
在您的示例中,解决方案是从 Employee 类中删除 baseSalary,并在继承树中与 CasualEmployee 处于同一级别的位置创建另一个子类(例如 BasedPayEmployee)。
关于java - 子类对象只能从父类(super class)对象继承某些参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47046971/