【Javaプログラミング】staticを使用したインナークラスとは?-プロショvol.54

スポンサーリンク
staticインナークラス Java攻略

前回はクラスの中にクラスを作るインナークラスというものについて見てきた。

 

今回はインナークラスにstaticを使用した場合について見ていく。

 

スポンサーリンク

インナークラスにstaticを使うとどうなるか?

 

インナークラス(クラスの内側に作られたクラス)にstaticを使うと、オブジェクトを作成する手間が一つ省ける。

 

 

staticを使わない場合は前回の記事でまとめた。

普通はインナークラスのデータを使用したいとき、まず外側のクラス(アウタークラス)のオブジェクトを作成しなければならなかった。

そしてその後にインナークラスのオブジェクトを作成。

内側のクラスに「static」が無い場合の話ー。

 

「static」を使うことで、アウタークラスのオブジェクトを作成しなくてよくなる

あくまでもアウタークラスのオブジェクトを作る必要がないということ。
インナークラスのオブジェクトは作成する必要がある。

 

なんでインナークラスのオブジェクトは作らないといけないの?

 

インナークラスは、結局は外側のクラスに属したもの。

インナークラスに「static」が書かれていたら、元々インナークラスが属している外側のクラスのオブジェクトは書く必要が無くなる。

だがインナークラスのオブジェクト自体は必要(ってことか)。

 

staticが無い時はアウタークラスのオブジェクトをインナークラスのオブジェクトを作る時に使っていた。

結局はインナークラスのオブジェクトは作る必要があるみたい。

 

staticを使ったインナークラスのコード

 

前回の記事で使ったコードを「static」を使ったものに変えてみた。

class Outer{
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」と書いたらエラーになっちゃうみたい。

 

アウタークラスの名前.インナークラスの名前 オブジェクト名 = new アウタークラスの名前.インナークラスの名前();

 

 

ちなみに上のコードを実行すると「内側」と表示される。

 

最後に

 

staticをインナークラスに使うことで、インナークラスのデータを参照したいときにオブジェクトの作成の手間が1つ省ける。

ただ、インナークラスに「static」をつけてもインナークラスのオブジェクトは作成する必要があるという点には注意。

作らなくてもいいのはアウタークラスのオブジェクトだよ。

 

もしアウタークラスのデータにアクセスしたいときは、アウタークラスのオブジェクトを作成する必要はある。

 

このエントリーをはてなブックマークに追加

コメント

タイトルとURLをコピーしました