≪Java≫ static変数はサブクラスに引き継がれないんじゃなかったっけ?(メモ)

前提として、
『継承する場合、静的メンバ(static)はサブクラスに引き継がれない』はずだが。。。
↓ 試してみた結果。

//スーパークラス
class Animal{
 static int n; → 静的メンバなので、サブクラスには継承されない(はず)
}
//サブクラス
class Dog extends Animal{}

//実行クラス
public class Exec {
 public static void main(String[] args) {
  Animal a = new Animal();
  Dog d = new Dog();
  a.n = 10; → コンパイルエラーではない。
  System.out.println(a.n); → 「10」と表示される
  System.out.println(d.n); → 「10」と表示される
  System.out.println(Animal.n); → 「10」と表示される

  d.n = 20;
  System.out.println(a.n); → 「20」と表示される
  System.out.println(d.n); → 「20」と表示される
  System.out.println(Animal.n); → 「20」と表示される

  Animal.n = 30;
  System.out.println(a.n); → 「30」と表示される
  System.out.println(d.n); → 「30」と表示される
  System.out.println(Animal.n); → 「30」と表示される
 }
}

。。。頭の整理が必要みたい。。。



引っ越し前の記事
シェアする
senをフォローする
プレミア商品・お得商品情報局(予約・再販情報も)


タイトルとURLをコピーしました