インナークラスとは?
インナークラスはクラスの中に作られたクラスのことを指す。
クラスについては以下の記事参照。
クラスとオブジェクト、メソッドについてもう一度考えてみた by Javaプログラミング初心者 Vol.33
例えば以下のような形のもの。
class B{
}
}
この場合、クラスBがインナークラスに当たる。
インナークラスのメリット
インナークラスを使うことで同じような形のクラスをグループ化することができる。
そしてグループ化することによってコードがスッキリし、読みやすくなるといったことが挙げられる。
インナークラスへのアクセス方法
インナークラスへアクセスするには、まず外側のクラス(アウタークラス)のオブジェクトを作成する必要がある。
オブジェクトの作成方法については以下参照。
自作したクラスに状態を表すデータを作る-オブジェクトの作成方法 by Javaプログラミング初心者 Vol.37
class B{
}
}
こちらを例にすると、まずAクラスのオブジェクトを作成
↓
Bクラスのオブジェクトを作成
以上のような流れ。

アウタークラスの中にあるから、直接インナークラスにアクセスすることはできないのね。
インナークラスのオブジェクト作成方法
インナークラスのオブジェクトを作成する際は、「アウタークラスからアクセスしてますよ」ということを示す必要がある。

いつも作っている方法とはちょっと異なる部分がある。
インナークラスのオブジェクトを作る流れ
アウタークラスのクラス名 オブジェクト名 = new アウタークラスのクラス名();
アウタークラスのクラス名.インナークラスのクラス名 インナークラスのオブジェクト名 = アウタークラスのオブジェクト名.new インナークラスのクラス名();
まずアウタークラスのオブジェクトはいつも通りの作り方でOK。
オブジェクト名は自分で好きな名前を付ける。
インナークラスのオブジェクトを作るには、まずインナークラスがアウタークラスに属しているということを示すために「アウタークラスのクラス名.インナークラスのクラス名」と書く。
「インナークラスのオブジェクト名」はアウタークラスのオブジェクト名とは異なる名前ならなんでもOK。

お好きな名前を。
インナークラスのオブジェクトはアウタークラスのオブジェクトと繋がっている。

アウタークラスのオブジェクト⇒インナークラスのオブジェクトとアクセスすることでインナークラスのデータなどが使える。
そのため、インナークラスのオブジェクトを作る際、「アウタークラスのオブジェクト名.new」と書く必要がある。
コード例
上の法則に従って作ってみたコードが以下のもの。
class Outer{
String A=”外側”;
class Inner{
String B =”内側”;
}
}
public class OuterInner {
public static void main(String[] args) {
Outer soto = new Outer();
Outer.Inner uchi = soto.new Inner();
System.out.println(uchi.B);
}
}
Outerというクラスの中にInnerというクラスを作ったもの。
Innerクラスの中に書いた「String B =”内側”;」というデータを呼び出すには、まずOuterクラスのオブジェクトを作成する必要がある(Outer soto = new Outer();)。
そしてInnerクラスのオブジェクトを作成(Outer.Inner uchi = soto.new Inner();)。
最後にInnerクラスのオブジェクト名と変数を使ってデータを呼び出す(System.out.println(uchi.B);)。
上のコードを実行すると「内側」と表示される。
コメント