我希望有人能引导我朝着正确的方向前进。我似乎无法在任何地方找到适当的解决方案。
我有一个名为 Student
的抽象类。三个外部课程扩展了学生。这些名为Graduate
,Undergraduate
和PartTime
。在我的主要方法中,我想根据一些逻辑构建一个对象,如研究生,本科生或者兼职。例如:
if (something) { Graduate student = new Graduate(); }
else if (something { Undergraduate student = new Undergraduate(); }
如果我试试这个,编译器(我正在使用Netbeans)抱怨已经定义了对象学生。如果我试试这个:
Student student;
if (something) { student = new Graduate(); }
学生无法访问任何特定于毕业生的方法。
如果我要将三个扩展类的内部静态类设置为Student,会有什么改变吗?
希望问题很清楚。关于如何解决这个问题的任何建议?任何建议都表示赞赏!
答案 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)
如果您想要更深入地阅读有关主题的一些工厂模式: