gpt4 book ai didi

java - 子类对象只能从父类(super class)对象继承某些参数吗?

转载 作者:太空宇宙 更新时间:2023-11-04 10:59:34 25 4
gpt4 key购买 nike

我有一个抽象类 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)。

Generalization, Specialization, and Inheritance

关于java - 子类对象只能从父类(super class)对象继承某些参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47046971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com