-1

Java は、私のセッター関数が存在しないと言っています...なぜですか? コードで後で作成者を設定すると、エラーメッセージが表示されましたが、基本的に同じ形式のタイトルのセッターはエラーを返しません。

class Author {
    String first_name;
    String last_name;
    int birth_year;
    int death_year;
    Author writer;

    Author () {}

    Author(String LastName, String FirstName) {
        first_name= FirstName;
        last_name = LastName;
    }

    Author getAuthor() {
        return writer;
    }
    void setAuthor(Author Writer) {
        Writer = writer;
    }
}
4

4 に答える 4

2
  void setAuthor (Author Writer) {
    Writer = writer;
  }

writerこれは、フィールドをWriter引数の値に設定しません。これにより、Writer引数がwriterフィールドの値に設定されます。このままでは駄目です。あなたがしたい

  void setAuthor (Author Writer) {
    writer = Writer;
  }
于 2013-11-13T21:43:00.927 に答える
2

ええと、Java がそれを伝えていないことは確かです。常に正確なエラー メッセージを貼り付ける必要があります。

つまり、セッターは、引数の値でフィールドを初期化するのではなく、フィールドの値でセッターの引数を初期化します。

そのはず:

void setAuthor (Author Writer) {
    this.writer = Writer;
}

Java の命名規則を尊重し、一貫性のある命名を行う必要があります。変数は小文字で始まります。それらはアンダースコアを含まず、camelCased: firstNamelastNameなどthis.xxx = xxxです。セッターで体系的な方法で使用すると、この種のバグを回避できます。

また、設計上の問題があるようです。なぜ著者には著者がいるのですか?本には著者が必要です。しかし、著者は著者を持つべきではありません。

于 2013-11-13T21:43:48.260 に答える
0

そのようにそれらを公開する

public class Author {
      String first_name;
      String last_name;
      int birth_year;
      int death_year;
      Author writer;
      Author () {
      }
      Author(String LastName, String FirstName) {
        first_name= FirstName;
        last_name = LastName;
      }
      public Author getAuthor() {
        return this.writer;
      }
      public void setAuthor (Author Writer) {
        this.writer = Writer;
      }
    }
于 2013-11-13T21:43:43.097 に答える