3

誰かが私を正しい方向に導くことができることを願っています。この問題の適切な解決策がどこにも見つからないようです。

という抽象クラスがありStudentます。3 つの外部クラスが Student を拡張します。これらはGraduateUndergraduate、 と呼ばれPartTimeます。私の主な方法では、何らかのロジックに基づいて、オブジェクトを大学院、学部、またはパートタイムとして構築したいと考えています。例えば:

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

これを試してみると、コンパイラ (私は Netbeans を使用しています) は、オブジェクト student が既に定義されていると不平を言います。私がこれを試してみると:

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

学生は大学院に固有のメソッドのいずれにもアクセスできません。

3 つの拡張クラスを Student の内部静的クラスにすると、何か変わるでしょうか?

うまくいけば、問題は明確です。この問題を解決する方法について何か提案はありますか? どんな提案でも大歓迎です!

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 に答える