java - 是否可以将对象的类转换为另一个类?
问题描述
假设我们有三个类:Person、Student 扩展 Person 和 OfficeWorker 扩展 Person。
public class Person{
//fields and methods, especially constructor & getter-setter methods
private String occupation;
}
public class Student extends Person{
private int education;
//Constructor assigns education zero to a student
public void dailyEducation(){
this.education++;
}
public void finishEducation(){
this.education = "Office Worker";
//_________________________________
}
}
public Class OfficeWorker extends Person{
//own fields and methods
}
public class mainF{
//typical psvm(s[]a)
}
那么我应该在 Student 类的空白处,甚至在 main 函数中填入什么内容,才能将人(即学生)更改为 OfficeWorker?
解决方案
一种方法:
interface Person {
String getOccupation();
}
class Student implements Person {
@Override
public String getOccupation() {
return "student";
}
}
class OfficeWorker implements Person {
@Override
public String getOccupation() {
return "office worker";
}
}
class LifetimePerson implements Person {
private Person currentRole = new Student();
@Override
public String getOccupation() {
return currentRole.getOccupation();
}
public void finishEducation() {
currentRole = new OfficeWorker();
}
}
finishEducation()
但是,如果您成为办公室工作人员后再次被呼叫,我们该怎么办?我们是抛出异常还是忽略它?
这是否是一种有用的方法取决于您的需求细节。
推荐阅读
- ffmpeg - FFMPEG 仅在 4k 视频并保持纵横比时降级
- javascript - Javascript 对象数组辅助
- javascript - 如何禁用单击图像?
- python - 依赖下拉错误“元组”对象没有属性“get”
- javascript - onChange 事件处理函数附加输入字段以更新应用程序的状态在第一次加载时执行一次,然后执行两次
- mainframe - 如何使用 JCL 显示所有 lpar 作业的输入等待队列详细信息
- excel - 如果那么直到最后一行
- javascript - 使用axios时如何在createAsyncThunk中创建playload
- javascript - 如何更新数组NodeJS,MongoDB中的特定对象
- scheme - 为什么要调用“向量集!” 当给定一个内部向量时,更改嵌套向量中的多个向量?