【问题标题】:Is it possible to convert an object's class to another? [duplicate]是否可以将对象的类转换为另一个类? [复制]
【发布时间】:2021-02-25 02:21:39
【问题描述】:

假设我们有三个类:Person、Student extends Person 和 OfficeWorker extends 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 函数中填入什么内容,才能将人(学生)变成办公室工作人员?

【问题讨论】:

  • 你可以让finishEducation返回一个Person,所以在这种情况下你会返回new OfficeWorker()。但这不会改变现有对象的类型,你不能这样做。

标签: java class oop subclass superclass


【解决方案1】:

一种方法:

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(),我们该怎么办?我们是抛出异常,还是忽略它?

这是否有用取决于您的需求细节。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-24
    • 2013-09-18
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多