java - 基于逻辑构造对象类型——这可以做到吗?

标签 java object subclass abstract

我希望有人能引导我朝着正确的方向前进。我似乎无法在任何地方找到解决此问题的合适方法。

我有一个名为 Student抽象类。三个外部类扩展 Student。这些称为 GraduateUndergraduatePartTime。在我的主要方法中,我想根据某种逻辑将一个对象构造为研究生、本科生或兼职。例如:

if (something) { Graduate student = new Graduate(); }
else if (something { Undergraduate student = new Undergraduate(); }

如果我尝试这样做,编译器(我使用的是 Netbeans)会提示对象 student 已经被定义。如果我尝试这样做:

Student student;
if (something) { student = new Graduate(); }

学生无法访问任何特定于研究生的方法。

如果我将三个扩展类设置为 Student 的内部静态类,会有什么改变吗?

希望问题是清楚的。关于如何解决这个问题的任何建议?任何建议表示赞赏!

最佳答案

你可以这样做:

Student student;
if (something) {
  Graduate graduate = new Graduate();
  graduate.visitMissisRobinson( );

  student = graduate;
}
else if (somethingElse) {
  Undergraduate undegradStudent = new Undergraduate();

  undegradStudent.declareMajor( );

  student = undegradStudent;
}

// now only do common methods of student
student.chargeTuition( );

关于java - 基于逻辑构造对象类型——这可以做到吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11659838/

相关文章:

javascript - 在另一个对象中重用对象

python - 子类 dict : UserDict, dict 还是 ABC?

javascript - ECMAScript 6 中的原型(prototype)链

iphone - 我可以避免使用公共(public)子类显式转换对象吗?

java - 无法在其他系统上加载 native 库

ios - 解析不保存字段

java - 使用 Google Dataflow 在批处理模式下使用 KafkaIO 进行消费

c++ - 在 C++ 函数中创建新对象导致程序崩溃

java - 将 wicket 页面的内容包含到 wicket 面板中

java - 奇怪的 Java 行为 : How come adding doubles with EXACTLY two decimal places result to a double with MORE THAN two decimal places?