【java】シンプルな内部クラスを使って理解を深める

  • 2020年5月25日
  • Java

今回は内部クラスの説明をしていきたいと思います。

継承と修飾子の知識があればすぐ理解できてしまいますが、これは自分用のメモ

同然なのでご勘弁を。

 

用意するもの

■外部クラス
・publicなクラス
・メソッド

■内部クラス
・privateメンバ変数
・getter・setter

■mainクラス

 

目的

普段はprivateフィールドは自分以外のクラス(外部のクラス)からはアクセスすることはできないです。

が、外部クラスとその中にある内部クラスを関連付けることで関連性が読み取ることができて

そのクラスが何をしたいのかを明確にすることができます。

あるクラスの中でピンポイントにクラスに用がある時や、役割ごとにクラスを

区分けして見やすくしたい時によく使われます。

コード


class Castle{
//フィールドにメンバを設置
public Gate i;

class Gate{
//ProtoCastleからのみアクセスを許可する
private String message;

public String getName(){
return message;
}
public void setName(String message){
this.message = message;
}
}

//内部クラスの外のメソッド
public static gateOpen(){
i = new Gate();//iにアクセスしてGateインスタンス生成
//内部クラスのメソッドにメッセージを渡す
i.setName("開門");
}

}
public class ProtoCastle {
public static void main(String[]args){
Castle castle = new Castle();
castle.gateOpen();
System.out.println(castle.i.getName());
}
}

 

CastleクラスではiにアクセスしてGateインスタンスを生成しています。

インスタンス生成後開門メッセージを送っていますね。

内部クラスと紐付けることで内部クラスのメソッドも使える様になりました。

main側ではgateOpenメソッドでsetName後にgetNameで送ったメッセージを

System.out.printlnで確認しています。

内部クラスの動きはこんな感じ。

クラスの関係性を限定的にできたので、かなり見やすいコードになったんじゃないかなと

思っています。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG