java 內(nèi)部類(lèi)怎樣使用

小樊
81
2024-11-15 09:36:54

Java內(nèi)部類(lèi)(Inner Class)是定義在另一個(gè)類(lèi)(外部類(lèi))內(nèi)部的類(lèi)。使用Java內(nèi)部類(lèi)可以訪(fǎng)問(wèn)外部類(lèi)的所有成員(包括私有成員),并且可以創(chuàng)建外部類(lèi)的實(shí)例。以下是Java內(nèi)部類(lèi)的一些常見(jiàn)用法:

  1. 訪(fǎng)問(wèn)外部類(lèi)的成員:
public class OuterClass {
    private int data = 10;

    class InnerClass {
        public void accessOuterMembers() {
            System.out.println("Outer class data: " + data);
        }
    }

    public static void main(String[] args) {
        OuterClass outer = new OuterClass();
        OuterClass.InnerClass inner = outer.new InnerClass();
        inner.accessOuterMembers(); // 輸出:Outer class data: 10
    }
}
  1. 創(chuàng)建外部類(lèi)的實(shí)例:
public class OuterClass {
    private int data = 10;

    class InnerClass {
        public void createOuterInstance() {
            OuterClass outer = new OuterClass();
            System.out.println("Outer class data: " + outer.data);
        }
    }

    public static void main(String[] args) {
        OuterClass.InnerClass inner = new OuterClass().new InnerClass();
        inner.createOuterInstance(); // 輸出:Outer class data: 10
    }
}
  1. 訪(fǎng)問(wèn)外部類(lèi)的靜態(tài)成員:
public class OuterClass {
    private static int data = 10;

    class InnerClass {
        public void accessOuterStaticMembers() {
            System.out.println("Outer class static data: " + OuterClass.data);
        }
    }

    public static void main(String[] args) {
        OuterClass.InnerClass inner = new OuterClass().new InnerClass();
        inner.accessOuterStaticMembers(); // 輸出:Outer class static data: 10
    }
}
  1. 使用匿名內(nèi)部類(lèi)(Anonymous Inner Class):
public class OuterClass {
    private int data = 10;

    public void createInner() {
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                System.out.println("Outer class data: " + data);
            }
        };
        new Thread(runnable).start();
    }

    public static void main(String[] args) {
        OuterClass outer = new OuterClass();
        outer.createInner(); // 輸出:Outer class data: 10
    }
}
  1. 使用局部?jī)?nèi)部類(lèi)(Local Inner Class):
public class OuterClass {
    private int data = 10;

    public void createLocalInner() {
        class LocalInnerClass {
            public void accessOuterMembers() {
                System.out.println("Outer class data: " + data);
            }
        }

        LocalInnerClass localInner = new LocalInnerClass();
        localInner.accessOuterMembers(); // 輸出:Outer class data: 10
    }

    public static void main(String[] args) {
        OuterClass outer = new OuterClass();
        outer.createLocalInner(); // 輸出:Outer class data: 10
    }
}

這些示例展示了Java內(nèi)部類(lèi)的基本用法。根據(jù)需求,您可以使用不同類(lèi)型的內(nèi)部類(lèi)(非靜態(tài)內(nèi)部類(lèi)、靜態(tài)內(nèi)部類(lèi)、匿名內(nèi)部類(lèi)和局部?jī)?nèi)部類(lèi))。

0