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

时间:2012-07-25 22:51:00

标签: java object subclass abstract

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

我有一个名为 Student 抽象类。三个外部课程扩展了学生。这些名为GraduateUndergraduatePartTime。在我的主要方法中,我想根据一些逻辑构建一个对象,如研究生,本科生或者兼职。例如:

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

如果我试试这个,编译器(我正在使用Netbeans)抱怨已经定义了对象学生。如果我试试这个:

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

学生无法访问任何特定于毕业生的方法。

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

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

2 个答案:

答案 0 :(得分:3)

你可以这样做:

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( );

答案 1 :(得分:0)

如果您想要更深入地阅读有关主题的一些工厂模式:

Factory pattern