スーパークラスのクラスメンバ - - 萌えJava超入門
クラスの継承

スーパークラスのクラスメンバ

スーパークラスの staticなメンバは、サブクラスからアクセス可能です。

static

目次

1. スーパークラスのクラスメンバ


スーパークラスのクラスメンバ(staticメンバ)について、
以下の2点を押さえておきましょう。

スーパークラスのクラスメンバ(staticメンバ)
  1. サブクラスやそのインスタンスから、クラス名なしでアクセスできます。
                (protected以上のメンバに限ります。)
  2. オーバライドできません。

萌えJava超入門 萌えJava超入門 萌えJava超入門
どこからでも使えるけど。
オーバライドは禁止。


2. サンプル


サンプルコードで確認してみましょう。

萌えJava超入門
Animal_01クラスの
printGroupメソッドを使うぞ。
printGroup はクラスメソッドだ。
Animal_01.java(再出)
//Animal_01.java

public class Animal_01{

      protected static String = "生き物です。";
      protected String name;

      public Animal_01(){
          this.name = "no_name";
      }
      public Animal_01(String name){
          this.name = name;
      }
      public static void printGroup(){
          System.out.println(group);
      }
      public void printName(){
          System.out.println(name + "だぞ! ガオー!");
      }
}

Dog_02.java(再出)
//Dog_02.java

public class Dog_02 extends Animal_01{
    public Dog_02(){
        super();
    }
    public Dog_02(String name){
        super(name);
    }
}

//Cat_02.java
public class Cat_02 extends Animal_01{
    public Cat_02(){
        super();
    }
    public Cat_02(String name){
        super(name);
    }
}

萌えJava超入門
よし、
いろいろなところから
printGroup()を呼んでみるぞ。
//Driver_st01.java

public class Driver_st01{

    public static void main(String[] args){
        Animal_01 animal01 = new Animal_01("アニマル浜口");
        Dog_02 dog02 = new Dog_02("白いお父さん");
        Cat_02 cat02 = new Cat_02("ニャース");

        //それぞれのクラスで printGroupメソッドを実行
        Animal_01.printGroup();
        Dog_02.printGroup();
        Cat_02.printGroup();

        //それぞれのインスタンスで printGroupメソッドを実行
        animal01.printGroup();
        dog02.printGroup();
        cat02.printGroup();

    }
}

Animal_01.java、
Dog_02.java、
Cat_02.java、
Driver_st01.java、を
wsフォルダに保存して実行します。

萌えJava超入門 萌えJava超入門
わ!
全部同じ結果だ!
コマンドライン
>cd ws
ws>javac -encoding UTF-8 Driver_st01.java
ws>java Driver_st01
生き物です。
生き物です。
生き物です。
生き物です。
生き物です。
生き物です。


スーパークラスのクラスメンバは、どこから参照しても同一です。

スーパークラスのクラスメンバは、アクセス修飾子が protected以上であれば
サブクラスからアクセスすることが可能です。

クラスメンバ(staticなメンバ)は、インスタンスからアクセスすることができますので、
サブクラスのインスタンスからもアクセスできます。

萌えJava超入門
サブクラスを作っても、
インスタンスを作っても、
staticなメンバは一つだけだ。
萌えJava超入門 萌えJava超入門
継承とは切り離して
考えて良さそうね。



お疲れ様です。




© 2019 awasekagami