さあ、この記事で空白の8日間の記事は終わりです!!
今回は、Innerclassということです。
Innerclassは、一番最初に書いた記事「9日目」に「Innerclass②」ということで書いています。
https://aki-be-pro-engineer-rec-myroute.com/2025/02/09/9%e6%97%a5%e7%9b%ae%e2%91%a0%ef%bc%882025-02-08%ef%bc%89innerclass/
時系列がバラバラで申し訳ないのですが、Innerclassを始めて学んだ8日目の記事、スタートです!!
この時点で、当然ながら何も分かっていないので、とにかくTim先生に従っていれば理解できるという考えのもと、Tim先生のコーディングを真似していきました。
まず、新規クラス「OuterClass」を作成。
(Outer class)
public class OuterClass{
public class InnerClass{
public void display(){
System.out.println(“This is an inner class”);
}
}
public void inner(){
InnerClass in = new InnerClass();
in.display();
}
OuterClassの中に、InnerClassを設置します。
InnerClassには、「This is an inner class」と表示させるdisplayメソッドを置きます。
innerというメソッドを作ります。
innerメソッドには、InnerClassの情報にアクセスできる「in」という新しい箱を作ります。
inには、InnerClassにあるdisplayメソッドを入れます。
といった感じでしょうか。。。
正直、この段階で何をやっているのか、そもそもOuterClassとInnerClassの違いや役割も全く分かっていなかったので、上で書いたような考察もできず、ただただ一生懸命にTim先生のコードを写すだけでした。
あと、今(2月14日)はちょっとだけ理解できてきましたけど、ここで使っているクラス名「OuterClass」や「InnerClass」をこの時(2月7日)は「型」と思って名前を変えたらダメだと思っていました。
そこらへんも全く分かっていなかったのが懐かしいです。
(メインクラス)
OuterClass out = new OuterClass();
OuterClass.InnerClass in = out.new InnerClass();
in.display();
System.out.println();
⇓
This is an inner class
OuterClassにoutという新しい箱を作ります。
OuterClassに所属するInnerClassのinという箱を作ります。inは、InnerClassのメソッドを入れたoutに等しいです。
inにInnerClass内にあるdisplay()メソッドを入れます。
その結果を表示させます。
みたいな感じでしょうか!!
ここで突如出てきた、「OuterClass.InnerClass」が本当に分からなくて、かなりの時間頭を抱えていた記憶があります。。。
ここに関しては、9日目の記事で触れています。
https://aki-be-pro-engineer-rec-myroute.com/2025/02/09/9%e6%97%a5%e7%9b%ae%e2%91%a0%ef%bc%882025-02-08%ef%bc%89innerclass/
(冒頭にもリンクを貼ってます。しつこくてごめんなさい)
ここで、この記事を書いている2月14日に、上のコードをちょっとアレンジして、
「This is an outer class」という文も表示させてみようとプチチャレンジしました!!
(OuterClass)
public class OuterClass{
public void Outerdisplay(){
System.out.println(“This is an outer class”);
}
public void outer(){
OuterClass out = new OuterClass();
out.Outerdisplay();
}
public class InnerClass{
public void display(){
System.out.println(“This is an inner class”);
}
}
public void inner(){
InnerClass in = new InnerClass();
in.display();
}
}
(メインクラス)
OuterClass out = new OuterClass();
OuterClass.InnerClass in = out.new InnerClass();
in.display();
out.Outerdisplay();
System.otu.println();
}
}
⇓
This is an inner class
This is an outer class



おおー!!
できたできた!!
特にオリジナル性がある訳でもないですが、めちゃくちゃ嬉しいです!!
この日は、とにかく「InnerClassってなんぞや」状態だったので、InnerClassについて調べてました。
【InnerClassとは】
クラス内に別のクラスを定義できる機能で、目的としては
①カプセル化の強化
外部から隠したいクラスを特定のクラスの内部だけに限定して定義できる。
②コードの整理と可読性の向上
関連性の高いクラスをまとめて定義することでコードが見やすくなり、管理も楽になる。
③便利なコーディング
外部クラスのメソッドやフィールドに簡単にアクセスできるので、共有データへのアクセスが簡単になる。
といった感じでした!!
もう1つ、AI先生の説明を見ながらコーディング!!
(class OuterClass)
public class OuterClass{
private String outer = “OuterClassから”;
public class InnerClass{
public void display(){
System.out.println(“InnerClassへ” + outer + “から取得”);
}
}
}
OuterClassは、文字列outerを持っていて、outerは”OuterClass”を格納してます。
OuterClassの中に置いたInnerClassは、ディスプレイを表示させます。
表示内容は、”InnerClassへ” + outer + “から取得” です。
→OuterClassにアクセスして、outerを取得
(メインクラス)
OuterClass ou = new OuterClass();
OuterClass.InnerClass inn = ou.new InnerClass();
inn.display();
System.out.println();
OuterClassにouという新しい箱を置きます。
OuterClassの中のInnerClassにinnという新しい箱を置きます。
innは、InnerClassのメソッドを新たに取り入れたouに等しいです。
innにInnerClassで定義したdisplayメソッドを入れて表示させます。
という感じで、8日目が終わりました!!
これで空白期間は埋めれたので、復習がてら自分でコードを書いたりしてから次に進みたいと思います!!
ではでは!!