9

Javaで基本クラスのコンストラクターを呼び出すことは必須ですか?C ++ではオプションだったので、これを求めています。

拡張するArrayAdapterと、次のエラーが発生します。"Implicit super constructor ArrayAdapter<String>() is undefined. Must explicitly invoke another constructor"

では、ベースコンストラクターを呼び出す目的は何ですか?オブジェクトを作成すると、基本クラスのコンストラクターが呼び出され、派生した権利が得られます。

4

2 に答える 2

11

no-argsコンストラクターは、自分で呼び出さない場合は暗黙的に呼び出されます。そのコンストラクターが存在しない場合は無効です。スーパーコンストラクターを呼び出す必要がある理由は、スーパークラスには通常、構築後に期待される状態があり、サブクラスに設定できないプライベート変数が含まれる場合があるためです。コンストラクターを呼び出さないと、オブジェクトがおそらく無効な状態のままになり、あらゆる種類の問題が発生する可能性があります。

于 2012-04-22T04:51:31.750 に答える
0

スーパークラスの引数なしコンストラクターを呼び出す必要はありません。argsを使用してコンストラクターを呼び出したい場合は、以下に示すようなユーザーsuperキーワードを使用します。

super(arg1, ...);
于 2012-04-22T04:53:37.183 に答える