TECH I.S.

Java 内部クラス


Java 内部クラス

Java では、クラスをネストする (クラス内のクラス) ことも可能です。ネストされたクラスの目的は、同じグループに属するクラスをグループ化し、コードを読みやすく、保守しやすくすることです。

内部クラスにアクセスするには、外部クラスのオブジェクトを作成してから、内部クラスのオブジェクトを作成します。

class OuterClass { int x = 10; class InnerClass { int y = 5; } } public class Main { public static void main(String[] args) { OuterClass myOuter = new OuterClass(); OuterClass.InnerClass myInner = myOuter.new InnerClass(); System.out.println(myInner.y + myOuter.x); } } // Outputs 15 (5 + 10)

自分で試してみる»


プライベート内部クラス

「通常の」クラスとは異なり、内部クラスはprivateまたはprotectedされることができます。外部オブジェクトが内部クラスにアクセスしたくない場合は、クラスをprivateとして宣言します。

class OuterClass { int x = 10; private class InnerClass { int y = 5; } } public class Main { public static void main(String[] args) { OuterClass myOuter = new OuterClass(); OuterClass.InnerClass myInner = myOuter.new InnerClass(); System.out.println(myInner.y + myOuter.x); } }

外部クラスからプライベート内部クラスにアクセスしようとすると、エラーが発生します。

`Main.java:13: error: OuterClass.InnerClass has private access in OuterClass

    OuterClass.InnerClass myInner = myOuter.new InnerClass();
              ^

自分で試してみる»



静的内部クラス

内部クラスはstaticにすることもできます。つまり、外部クラスのオブジェクトを作成せずに内部クラスにアクセスできます。

class OuterClass { int x = 10; static class InnerClass { int y = 5; } } public class Main { public static void main(String[] args) { OuterClass.InnerClass myInner = new OuterClass.InnerClass(); System.out.println(myInner.y); } } // Outputs 5

自分で試してみる»

注: 静的属性やメソッドと同様に、静的内部クラスは外部クラスのメンバーにアクセスできません。


内部クラスから外部クラスにアクセスする

内部クラスの利点の 1 つは、外部クラスの属性とメソッドにアクセスできることです。

class OuterClass { int x = 10; class InnerClass { public int myInnerMethod() { return x; } } } public class Main { public static void main(String[] args) { OuterClass myOuter = new OuterClass(); OuterClass.InnerClass myInner = myOuter.new InnerClass(); System.out.println(myInner.myInnerMethod()); } } // Outputs 10

自分で試してみる»



プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細