首页 > 解决方案 > 是否可以将对象的类转换为另一个类?

问题描述

假设我们有三个类: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?

标签: javaclassoopsubclasssuperclass

解决方案


一种方法:

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()但是,如果您成为办公室工作人员后再次被呼叫,我们该怎么办?我们是抛出异常还是忽略它?

这是否是一种有用的方法取决于您的需求细节。


推荐阅读