前回はクラスの中にクラスを作るインナークラスというものについて見てきた。
前回の記事はこちら↓
【Javaプログラミング】インナークラスとは?-プロショvol.53
今回はインナークラスにstaticを使用した場合について見ていく。
staticについては以下の記事参照。
メソッドを作るときstaticを使うか使わないか by Javaプログラミング初心者 Vol.42
インナークラスにstaticを使うとどうなるか?
インナークラス(クラスの内側に作られたクラス)にstaticを使うと、オブジェクトを作成する手間が一つ省ける。
オブジェクトについては以下参照。
クラスとオブジェクト、メソッドについてもう一度考えてみた by Javaプログラミング初心者 Vol.33
staticを使わない場合は前回の記事でまとめた。
普通はインナークラスのデータを使用したいとき、まず外側のクラス(アウタークラス)のオブジェクトを作成しなければならなかった。
そしてその後にインナークラスのオブジェクトを作成。
内側のクラスに「static」が無い場合の話ー。
「static」を使うことで、アウタークラスのオブジェクトを作成しなくてよくなる。
なんでインナークラスのオブジェクトは作らないといけないの?
インナークラスは、結局は外側のクラスに属したもの。
インナークラスに「static」が書かれていたら、元々インナークラスが属している外側のクラスのオブジェクトは書く必要が無くなる。
だがインナークラスのオブジェクト自体は必要(ってことか)。
staticが無い時はアウタークラスのオブジェクトをインナークラスのオブジェクトを作る時に使っていた。
結局はインナークラスのオブジェクトは作る必要があるみたい。
staticを使ったインナークラスのコード
前回の記事で使ったコードを「static」を使ったものに変えてみた。
String A=”外側”; static class Inner{
String B =”内側”;
}
}
public class OuterInner { public static void main(String[] args) { Outer.Inner uchi = new Outer.Inner();
System.out.println(uchi.B); } }
インナークラスに「static」を使うことで前回と違う部分は以下。
Outer.Inner uchi = new Outer.Inner();
アウタークラスのオブジェクトが不要なため、インナークラスのオブジェクトを作る際は「new」だけでOK。
前回は「soto.new」と書いた。
「soto」はアウタークラスのオブジェクトを作ったときの名前。
オブジェクトはOuterクラスに所属したInnnerクラスから作るということで「Outer.Inner()」と書く。
前回は「Innner()」と書いた。
「static」がない場合、アウタークラスのオブジェクトを使って「soto.new」インナークラスのオブジェクトを作るから「Innner」だけで良い。
この場合「Outer.Inner」と書いたらエラーになっちゃうみたい。
基本的なオブジェクトの作成方法については以下参照。
自作したクラスに状態を表すデータを作る-オブジェクトの作成方法 by Javaプログラミング初心者 Vol.37
ちなみに上のコードを実行すると「内側」と表示される。
最後に
staticをインナークラスに使うことで、インナークラスのデータを参照したいときにオブジェクトの作成の手間が1つ省ける。
ただ、インナークラスに「static」をつけてもインナークラスのオブジェクトは作成する必要があるという点には注意。
作らなくてもいいのはアウタークラスのオブジェクトだよ。
もしアウタークラスのデータにアクセスしたいときは、アウタークラスのオブジェクトを作成する必要はある。
コメント