質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java ME

Java ME(Java Platform, Micro Edition)はリソースが制限されたデバイス(携帯電話、PDA、テレビなど)用につくられたJavaプラットフォームである。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

3回答

3359閲覧

java変数呼び出し。 .this this() .super super()

7ppm

総合スコア12

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java ME

Java ME(Java Platform, Micro Edition)はリソースが制限されたデバイス(携帯電話、PDA、テレビなど)用につくられたJavaプラットフォームである。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2016/01/08 05:28

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)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ozwk

2016/01/08 06:03

結局何が聞きたいのでしょうか
izkn

2016/01/09 02:59

こちらの質問が他のユーザから「問題・課題が含まれていない質問」という評価を受けています teratailでは、漠然とした興味から票を募るような質問や、意見の主張をすることを目的とした投稿は推奨していません。 質問の意図や解決したい課題を明確に記述していただくと、回答が得られやすくなります。
guest

回答3

0

A this.category

これは Literatureオブジェクトのcategoryを指すので、"fiction"になります。

B super.category

これは Literatureオブジェクトのスーパークラス(book)のcategoryを指すので、"nonfiction"になります。

C this(category)

これはLiteratureのコンストラクタを指します。
今回は Literature(String str) のインタフェースが定義されていないので、コンパイルエラーになります。

D super().category

super()はbookクラスのコンストラクタを指すので、続けて.categoryと記述する事はできません。コンパイルエラーとなります。

E Book.category

これはBookクラスのcategoryがstatic変数の場合の書き方です。
bが大文字になっているのは誤植でしょうか?

F super(category)

これはbookクラスの、string型の1つの引数を持つコンストラクタを指します。
book(String str)のインタフェースが定義されていないので、コンパイルエラーになります。

投稿2016/01/08 07:34

shanxia

総合スコア1038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Javaでは子クラスが親クラスと同じ名前のフィールドを持つことができ、互いに干渉しません。
この問題の場合、BookクラスとLiteratureクラスが持つcategoryフィールドは別のものです。
そのため、Literatureクラスのcategoryとして"fiction"を設定しても、Bookクラスのcategoryの"nonfiction"という文字列をsuper.categoryで持ってくることができます。

投稿2016/01/08 07:30

swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

そもそもの考え方が間違っています。
displayCategoriesは親クラスであるBookが持つべきメソッドです。
そして、現実の話としてフィクション、ノンフィクションには親子関係はないのでクラスの設計が間違っています。

投稿2016/01/08 06:18

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

swordone

2016/01/08 06:33

今はその議論は関係ない気がします。
yona

2016/01/08 06:57 編集

質問の内容が質問者の勘違いから始まっている場合に、それを正すことは関係があるとおもいます。 また、現状の実装で質問者の言う、xに何かを入れて解決する方法なんてないですよね?
swordone

2016/01/08 14:50

質問を読む限りでは本か何かの問題として出題されている課題であることが容易に想像できます。A-Fの選択肢も提示されていますし。 「このようなコードでこんな仕様を実現するにはどうしたら良いか?」という問題に対して「問題がおかしい」という議論はおかしいのではないでしょうか。 確かに仕様としては変ですが、この質問に関してはその議論は意味が無い、ということです。
yona

2016/01/08 15:16

思いつくことを列挙したとも取れますよね? それは質問者さんに聞くことなのでそんな話は良くて。 具体的にxに何を入れれば満たされるでしょうか、教えていただけないでしょうか?
swordone

2016/01/08 15:20

Bのsuper.categoryで良いのでは? 修飾子なしなのでパッケージプライベートのようですが、パッケージが指定されていないので問題なくアクセスできるはずだと思うのですが。
yona

2016/01/08 15:35

勘違いをしていました。申し訳ありません。super.categoriesでできますね。 質問者さん これは本当に書籍かなにかの問題なのでしょうか? swordoneさん teratailのカイトウは解答ではなく、回答なので私の回答の内容は誤りではないと思いますがどうでしょうか?
ozwk

2016/01/08 15:40

言語仕様の確認のためのコードに対して、 「そもそも設計がおかしい」という指摘は 確かに誤りではないですが、関係ない話題だと思います。
7ppm

2016/01/08 23:24

super.category だと最初に"nonfiction"が出力されてfictionはどういう手順でその後出力されるんですか?
ozwk

2016/01/09 00:24 編集

super.categoryは nonfictionしか出力しません コードよく見て下さい System.out.print(category + " , " + super.category ); ですよ System.out.print(super.category ); じゃないですよ
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問