12

フィールドをパラメーターとして受け取り、それをスーパークラスに格納されているフィールドに入れるコンストラクターを作成しようとしています。これが私が使用しているコードです

public crisps(String flavour, int quantity) {
    this.flavour = super.getFlavour();
    this.quantity = quantity;
}

スーパークラスでは、フィールドを初期化しました

private String flavour;

そして私はアクセサメソッドを持っています

public String getFlavour() {
    return flavour;
}

「フレーバーにはスーパークラスにプライベート アクセスがあります」というエラーが表示されますが、それをフィールドに返すアクセサ メソッドを呼び出しているので、これは問題ではないと思いますか?

4

4 に答える 4

2
public crisps(String flavour, int quantity)
{
    super(flavour);
    this.quantity = quantity;
}

これは、ドキュメントを参照してください。

于 2015-01-16T20:14:55.827 に答える
2

flavourプライベートです。パブリック メソッドから読み取っていますが、それをプライベート フィールドに割り当てており、このクラスで宣言していない可能性があります。

protected親クラスでフレーバーを設定するか、そのセッターを定義できます

最終的に、あなたのコードは本当に意味がありません。コンパイルできたとしても、多かれ少なかれ次のようになりますflavour = flavour。やろうとしていることを少し考え直したほうがいいかもしれません

Java とオブジェクト指向プログラミングについてもっとしっかりと把握する必要があると思います。

http://docs.oracle.com/javase/tutorial/java/concepts/

ここから始めるべきです。

于 2013-10-11T20:03:50.077 に答える