Java クラスの継承〜アクセス修飾子〜

クラスの継承

クラス継承の方法は、簡単です。下のようにコードを書けば良いです。

public class Child1 extends Parent { ... } 

継承関係を作ると、子クラスが親クラスの実装を受け継ぎ拡張することができます。

クラスの書き方などは下を参照下さい。

Java Basic Class 〜クラスを作ってクラスを理解する〜

Java Basic Class 〜クラスを使うサンプル〜

ここからが本題です。

アクセス修飾子

継承関係を作成したあとには、フィールド変数や、メソッドを定義します。

これらは「メンバ」と呼ばれインスタンスを生成して使用する事が多いです。インスタンスを生成しない場合はstatic修飾子をつけて使用します。

前置きはさておきにして具体的な使い方などに触れていきます。

変数のスコープprivate

まずは、下の様にクラスの継承関係を作ります。

親クラス

public class Parent {
   protected static int kakei = 1000;
   protected Stirng lastName;
   private String name;
   private int age;
      /** コンストラクタ */
      public Parent() {
         lastName = "test";
         name = "taro";
         age = 50;
      }
   public void say() {
      System.out.println("My name is " + name + " " + lastName + " and " + age + "years old.");
   }
}

子クラス

public class Child1 {
   private String name;
   private String age;
   public Child1 {
      name = "polo";
      age = 15;
   }
   @Overeide
   public void say() {
     System.out.println("My name is " + name + " " + lastName + " and " + age + "years old.");
   }
}

メインメソッド

public static void main(String[] args) {
   Parent p = new Parent();
   p.say();
   Child1 c1 = new Child1();
   c1.say));
}

そして、上の様な処理を実装したら

どんな出力が得られるでしょうか?

注意点としては、アクセス修飾子により、アクセスするフィールド変数が異なるところです。実行して確かめてみてください。

変数のスコープprotected

次は、protectedについて見てみます。

ParentクラスのlastNameに着目してください。2つのクラスの出力は、「test」になったと思います。これは継承関係があるクラス間で共有出来る、スコープが継承関係のあるクラス間で使用出来る様になっているからです。※パッケージ内でも使える様です。

これらのクラスのコードをいじっていろんな出力を確認してみてください。

きっと、クラスの継承とはどんなものか?の答えが出ると思います。

でわでわ。。。