2
1

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.

1分でわかるローカルクラス JavaGold取得への道(内部クラス編)

Last updated at Posted at 2022-02-12

徹底攻略Java SE 11 Gold問題集(黒本)を読んで最初にぶち当たる壁「内部クラス」ついて、4つの記事に分けてまとめました。
僕のようなJava初心者や、JavaGoldの資格取得に向けて、勉強をしている方にこの記事がお役に立てれば幸いです。
#はじめに
内部クラスには4種類あります。
今回はその中のローカルクラスについて解説していきます。

・インナークラス
・staticインナークラス
・ローカルクラス👈
・匿名クラス

##ローカルクラスとは?
一言で表すと、メソッドの中にクラスを定義したクラスのことを指します。
メソッドごとに実装内容を変えることできます。
知っておいて頂きたいルールが2点ごさます.
 ・ローカルクラスが参照するローカル変数はローカルクラスの定義よりも前に定義される
 ・ローカルクラスから参照するローカル変数は実質的にfinalでなければいけない
この2点が守れないとコンパイルエラーになります。
###ローカルクラスとアクセス修飾子の関係
下記の表はローカルクラスとアクセス修飾子の関係を表しています。

public protected private abstract  final  static
× × ×  ×

上記の表で×のアクセス修飾子を定義するとコンパイルエラーになるので注意してください。

##どの場面で必要か?
そこそこ複雑な初期化や、処理を持つもののコンラクター内でしか必要のないクラスが出てるくる場合がよくあります。
そういった場合匿名クラスを実装すると、可読性に欠けるので、そういった時にローカルクラスを利用します。

#どのように使うの?
###定義方法
下記のコードのようにメソッドの中にクラスを定義するだけです。
インスタンスの生成方法は同じメソッド内でローカルクラスのインスタンスを生成します。
下記のコードの例だとexcuteメソッドのスコープ内で定義をします。

Outer.java
public class Outer{
  public void execute(){
   class LocalClass{
     void localExecute(){
       System.out.println("ローカルクラスのメソッドです。");
     }
   }
  //ローカルクラスをインスタンス化
  LocalClass local = new LocalClass();
  local.localExecute();
  }
 }

##実装結果

main.java
public class Main{
 public void main (String[] args){
  Outer.outer = new Outer.();
  outer.execute();
  }
}
結果
ローカルクラスのメソッドです。

#まとめ
・ローカルクラスとは、メソッド内で定義したクラスのこと
・インスタンスの生成方法は同じメソッド内でローカルクラスのインスタンスを生成します。
##参考文献
・徹底攻略Java SE 11 Gold問題集
・あなたの知らない、4つのマニアックなJava文法
・JAVA インナークラス・ローカルクラス

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?