javaで変数の呼び出しに関する問題です。コードが正常にコンパイルされ、fiction, nonfictionが出力されるようにするには、xの部分に何を挿入すればいいですか。という問題で謎があります。
まず、fiction, nonfictionと出力させるには、まず最初に継承されたLiteratureクラスを呼び出さなければなりません。
ここで仮にthis(category)と呼び出してもこれは同じクラス内にあるコンストラクタを呼び出すものですからエラーになります?そもそもこのコードにはコンストラクタはありませんしね?
次にAです。this.categoryでは、同じクラスに直接宣言されているフィールドString category = "fiction";を呼び出せます。よって、これは正しく思います。
しかし、ここでまた疑問が浮上します。晴れて"fiction"が出力できたとしても、これではスーパークラスに行けないではないか、ということです。
おそらく私の初歩的な知識の欠落がこの謎を生み出しているのだと思います。
ぜひお力をお貸しください。
class book {
String category = "nonfiction";
}
public class Literature extends Book {
String category = "fiction";
public void displayCategories() { System.out.print(category + " , " + x); } public static void main (String [] args) { Literature obj = new Literature(); obj.displayCategories(); }
}
A this.category
B super.category
C this(category)
D super().category
E Book.category
F super(category)