スーパークラスのメンバへのアクセス

広告

ここではスーパークラスで定義されたメンバ変数やメンバメソッドへのアクセスについて確認していきます。

まず下記のようなクラスを作成します。Carクラスがスーパークラス、SoarerクラスはCarクラスを継承しています。

class Car{
  int speed = 0;

  public void accele(){
    speed += 5;
  }

  public void brake(){
    speed -= 5;
  }
}

class Soarer extends Car{
  boolean roofOpenFlag = false;

  public void openRoof(){
    roofOpenFlag = true;
  }

  public void closeRoof(){
    roofOpenFlag = true;
  }
}

次にSoarerクラスのオブジェクトを作成します。

class ctest11{
  public static void main(String args[]){
    Soarer soarer = new Soarer();
  }
}

Soarerクラスのオブジェクトは、Soarerクラス名で定義されたメソッドを実行したり、変数を参照することが出来ます。

class ctest11{
  public static void main(String args[]){
    Soarer soarer = new Soarer();

    soarer.openRoof();
    if (soarer.roofOpenFlag){
      System.out.println("屋根が開いています");
    }else{
      System.out.println("屋根が閉じています");
    }
  }
}

またスーパークラスであるCarクラスのメソッドを実行したり変数を参照する事も可能です。

class ctest11{
  public static void main(String args[]){
    Soarer soarer = new Soarer();

    soarer.openRoof();
    if (soarer.roofOpenFlag){
      System.out.println("屋根が開いています");
    }else{
      System.out.println("屋根が閉じています");
    }

    soarer.accele();
    System.out.println("現在の速度は" + soarer.speed + "キロです");
  }
}

このようにあるクラスを継承したクラスは、自分自身で定義されたものの他に、継承したスーパークラスのメソッドを実行したりメンバ変数を参照することが可能です。

サンプルプログラム

では実際に試してみましょう。

ctest11.java

class ctest11{
  public static void main(String args[]){
    Soarer soarer = new Soarer();

    soarer.openRoof();
    if (soarer.roofOpenFlag){
      System.out.println("屋根が開いています");
    }else{
      System.out.println("屋根が閉じています");
    }

    soarer.accele();
    System.out.println("現在の速度は" + soarer.speed + "キロです");
  }
}

class Car{
  int speed = 0;

  public void accele(){
    speed += 5;
  }

  public void brake(){
    speed -= 5;
  }
}

class Soarer extends Car{
  boolean roofOpenFlag = false;

  public void openRoof(){
    roofOpenFlag = true;
  }

  public void closeRoof(){
    roofOpenFlag = true;
  }
}

実際に実行した結果は下記の通りです。

p1

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)