3

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

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

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

如果我尝试这个,编译器(我正在使用 Netbeans)会抱怨对象 student 已经被定义。如果我试试这个:

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

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

如果我让三个扩展类成为学生的内部静态类,会有什么改变吗?

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

4

2 回答 2

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( );
于 2012-07-25T22:57:59.680 回答
0

如果您想更深入地阅读有关该主题的内容,请查找一些工厂模式:

工厂模式

于 2012-07-25T23:05:09.203 回答