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

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

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

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

Q&A

解決済

1回答

3756閲覧

変数を継承する場合、staticが付いているものと付いていないものは別の変数扱いですか?

sprechchor

総合スコア14

Java

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

1グッド

1クリップ

投稿2018/05/29 16:25

javaの初学者です。
継承における変数の問題です。
変数とメソッドを引き継げるはずですが、staticが付いている変数と、付いていない同名の変数があった場合はどうなるのでしょうか?
コンパイルは通り、それぞれ違う値が出ました。
それはつまり、スーパークラスとサブクラスで違う変数として定義されているということだと思いました。
よって、同じ名前の変数がstatic領域と、スタック領域に別々に格納されているという認識であっているでしょうか?

class A{ static int num=0; //←このスタティック変数のnum A(){ num++; System.out.println(num); } } class B extends A{ int num=10; //←このメンバ変数のnum B(){ num++; System.out.println(num); } } class Test{ public static void main(String[] args){ B b=new B(); } }
set0gut1👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

よって、同じ名前の変数がstatic領域と、スタック領域に別々に格納されているという認識であっているでしょうか?

その通りです。
staticに限らず、親クラスと子クラスで同じ名前のフィールドを宣言すると、子クラスでは子クラスのフィールドを優先するため、親クラスのフィールドが見えなくなり、これを隠蔽と呼びます。

この場合に親クラスの同名フィールドにアクセスするにはsuperを使います。
隠蔽されている親クラスのstaticフィールドにアクセスするには親クラスのクラス名を使います。

Java

1class B extends A{ 2 int num=10; 3 B(){ 4 num++; 5 System.out.println(num); 6 } 7 8 public int aNum(){ 9 return A.num; // Aクラスのstatic変数num 10 } 11 12 public int bNum(){ 13 return this.num; // Bクラスのフィールドnum 14 } 15}

投稿2018/05/29 22:33

編集2018/05/29 22:35
YamakawaJunichi

総合スコア630

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

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

YamakawaJunichi

2018/05/29 22:36

一点訂正、フィールドはスタック領域ではなくヒープ領域に取られますね。
sprechchor

2018/05/30 06:52

回答有り難うございます。 別々であるということを理解できました。 super、ヒープ領域の回答もありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問