IntegerLinkedListから継承する必要がありますが、に固有の新しい変数も作成しStringAndIntegerLinkedList
ます。何が欠けているのですか?
class IntegerLinkedList {
int payload;
IntegerLinkedList next;
public IntegerLinkedList(int payload, IntegerLinkedList next) {
this.payload = payload;
this.next = next;
}
class StringAndIntegerLinkedList extends IntegerLinkedList {
String stringPayload;
public StringAndIntegerLinkedList(String stringPaylod, int payload, IntegerLinkedList next) {
this.stringPayload = stringPaylod;
this.payload = payload;
this.next = next;
}
また、各クラスの各フィールドにセッターとゲッターがあります。
エラーメッセージ:
StringAndIntegerLinkedList.java:4: error: constructor IntegerLinkedList in class IntegerLinkedList cannot be applied to given types;
public StringAndIntegerLinkedList(String stringPaylod, int payload, IntegerLinkedList next) {
^
required: int,IntegerLinkedList
found: no arguments
reason: actual and formal argument lists differ in length
1 error
ここに:
public IntegerLinkedList(int payload, IntegerLinkedList next) {
これは、Javaコンパイラーが派生コンストラクター内から呼び出したいコンストラクターです。2つのパラメーターがあることに注意してください。
ただし、派生コンストラクターには3つのパラメーターがあります。では、どのコンパイラーを使用するかをコンパイラーがどのように想定しているのでしょうか。
1つの解決策:super(payload, next);
最初のステートメントとして、その派生コンストラクターに入れます。
重要な部分は、すべてのコンストラクターが同じクラス内の別のコンストラクター、またはスーパークラスコンストラクターを呼び出す必要があることです。その明示的な呼び出しを省略した場合、コンパイラーはそれを挿入しようとします。足し合わないときにできないこと。
その背後にある理論については、たとえばここを参照してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加