徹底攻略Java SE 11 Gold問題集(黒本)を読んで最初にぶち当たる壁「内部クラス」ついて、4つの記事に分けてまとめました。
僕のようなJava初心者や、JavaGoldの資格取得に向けて、勉強をしている方にこの記事がお役に立てれば幸いです。
#はじめに
ネストしたクラスには4種類あります。
今回はその中でインナークラスについて解説していきます。
・インナークラス👈🏻
・staticインナークラス
・ローカルクラス
・匿名クラス
#インナークラスとは?
一言で表すと、クラスの中に定義したクラスのことをインナークラスと言います。
###使い所
・パッケージの中でも隠蔽したい時に使います。
身近な例に例えると、たとえ血の繋がっている家族でも秘密にしたいことってありまよね。
多くの人は、秘密を自分自身の中に留めておきます笑。
イメージとしてはこのような感じなのかな〜って思います。
#どのように使うの?
###定義方法
下記のコードのようにクラスの中にクラスを定義するだけです。
public class Outer{
class Inner{
public void sample(){
System.out.println("インナークラスです。");
}
}
}
インナークラスを定義する時にstaticを修飾するとstaticインナークラスになるのでご注意してください。
下記の表はインナークラスとアクセス修飾子の関係を表しています。
public | protected | private | final | static |
---|---|---|---|---|
○ | ○ | ○ | ○ | × |
##インナークラスのインスタンスの生成方法
エンクロージングクラスをインスタンス化してから、インナークラスをインスタンス化します。
上のコード例だと、エンクロージングクラスはOuterクラスのことを指します。
public class Main{
public static void main(String[] args){
Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
inner.sample();
}
}
結果
インナークラスです。
インナークラスのみのインスタンス生成をすることは出来ません。
#まとめ
・インナークラスとは、クラスの中に定義したクラスのこと
・インスタンスを生成するときは、エンクロージングクラスをインスタンス生成してから生成する
##参考文献
・優しくない!? Javaシリーズ
・徹底攻略Java SE 11 Gold問題集
・【Java】インナークラス(内部クラス)って何?概要から使い方まで解説
https://style.potepan.com/articles/30021.html