2016-05-28 1 views
0

私は、Studentという名前の親クラスを持っています。私はこれを拡張して、PermanentStudentとCasualStudentの2つの子クラスを作成しました。私は両方の拡張子クラスのコンストラクタを書いています(両方の子クラスは独自のコンストラクタを持っています)。今、私は、4名の学生が永住者になり、6名がカジュアルスチューデントになる、10名の学生の配列を作ります。次のようにこのために、私はでした:親クラスの配列はJavaの子クラスオブジェクトを保持できますか?

Student[] a = new Student[10]; 
int count; 

を今、私は4つの恒久的な学生のオブジェクトの配列を埋めたいと6カジュアルな学生は自分のコンストラクタを通じて情報を持つオブジェクト。私は次のことを行う:

for (count = 0; count < 4; count++) 
{ 
    a[count] = new PermanentStudent(a,b,c); // invoking the constructor 
} 
for (count = 4; count < 10; count++) 
{ 
    a[count] = new CasualStudent(x,y); // invoking the constructor of the other class 
} 

しかし、これは私にコンパイルエラーを与える。私はどこでこれで間違っていますか?ありがとう!

+0

"コンパイルエラー"はあまり明確ではありませんが、_message_エラーを教えてください。 – Sweeper

+0

どのようなエラーメッセージが表示される –

+0

このクラスのコンストラクタを呼び出すことができないというエラーが表示されます。 –

答えて

1

あなたの場合、Base base = new Sub()またはbase[i] = new Sub()のような割り当ては、Javaでは合法です。 コンストラクタに問題があり、引数なしのコンストラクタがStudentに存在することを確認してください。

0

これは、コンストラクタの問題であり、ポリモーフィズム自体ではありません(テストしたときに動作しますか?)。おそらくあなたのコンストラクタのデータ型が一致し、スーパークラスに初期化するコンストラクタがないことを確認してください。

関連する問題