0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

2分でわかるstaticインナークラス JavaGold取得への道(内部クラス編)

Last updated at Posted at 2022-02-12

徹底攻略Java SE 11 Gold問題集(黒本)を読んで最初にぶち当たる壁「内部クラス」ついて、4つの記事に分けてまとめました。
僕のようなJava初心者や、JavaGoldの資格取得に向けて、勉強をしている方にこの記事がお役に立てれば幸いです。
#はじめに
内部クラスには4種類あります。
今回はその中のstaticインナークラスについて解説していきます。
インナークラス
・staticインナークラス👈
ローカルクラス
匿名クラス
##staticインナークラスとは?
一言で表すと、クラスの中で定義したstaticで修飾したクラスのことを指します。
知っておいて頂きたい特徴が2点ごさます.
 ・外部クラスの非staticなフィールドやメソッドにはアクセスできない
 ・外部クラスのインスタンが無くても、インスタンス生成ができる
この2点の特徴から分かるように外部クラスやそのインスタンスとの関係が比較的薄いです。
例えるなら、従兄弟みたいな感じでしょうか。
身内だけど家族よりは親近感が薄いよねってことをイメージして頂ければ結構です。
##どの場面で必要か?
別のクラスとして分離する必要がなく、外部クラスのインスタンス生成が必要ない時
例えば、あるMapを色々な要素でソートをかけられるようにしたい場合があったとします。
また、そのMapを並べるだけの実装なのでわざわざ別クラスとして分離しておく必要はありません。
そうのような場面にstaticインナークラスを利用します。
#どのように使うの?
###定義方法
下記のコードのようにクラスの中にstaticで修飾されたクラスを定義するだけです。

Outer.java
public class Outer{
  public static class Inner{
    public void sample(){
      System.out.println("staticインナークラスです。");
    }
  }
}

下記の表はインナークラスとアクセス修飾子の関係を表しています。

public protected private final static
##インナークラスのインスタンスの生成方法
外部クラスのインスタンが無くてもインスタンスが生成できます。
main.java
public class Main{
  public void main (String[] args){
   Outer.Inner inner = new Outer.Inner();
   inner.sample();
  }
}
結果
staticインナークラスです。

外部クラスの非staticなフィールドやメソッドにはアクセスできないのでご注意ください。

#まとめ
・staticインナ-クラスとは、クラスの中に定義したstaticで就職されたクラスのこと
・外部クラスのインスタンが無くても、インスタンス生成ができる
##参考文献
・徹底攻略Java SE 11 Gold問題集
・【Java】内部クラス(インナークラス)の使い方

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?