Java是一種面向?qū)ο蟮木幊陶Z(yǔ)言,內(nèi)部類和匿名類是其獨(dú)特的特點(diǎn)之一。
內(nèi)部類是定義在另一個(gè)類中的類。它可以訪問(wèn)外部類的所有數(shù)據(jù)和方法,包括私有成員。內(nèi)部類分為成員內(nèi)部類、局部?jī)?nèi)部類和匿名內(nèi)部類。
//成員內(nèi)部類 public class OuterClass{ private int num; public class InnerClass{ public void print(){ System.out.println("num = " + num); } } } OuterClass outer = new OuterClass(); OuterClass.InnerClass inner = outer.new InnerClass(); inner.print(); //num = 0(默認(rèn)初始化值)
//局部?jī)?nèi)部類 public class OuterClass{ public void print(){ class InnerClass{ public void innerPrint(){ System.out.println("InnerClass"); } } InnerClass inner = new InnerClass(); inner.innerPrint(); //InnerClass } } OuterClass outer = new OuterClass(); outer.print();
匿名類是一種沒(méi)有類名的內(nèi)部類。它通常用于創(chuàng)建只有一個(gè)實(shí)例的類。匿名類可以實(shí)現(xiàn)接口、繼承類以及在方法中定義。
//實(shí)現(xiàn)接口 public interface Message{ void printMessage(); } Message msg = new Message(){ public void printMessage(){ System.out.println("This is the message."); } }; msg.printMessage(); //This is the message.
//繼承類 public class A{ public void print(){ System.out.println("A"); } } A a = new A(){ public void print(){ System.out.println("B"); } }; a.print(); //B
//方法中定義(Java 8及以前版本) public void print(){ Thread t = new Thread(new Runnable(){ public void run(){ System.out.println("Thread"); } }); t.start(); } print(); //Thread
以上是關(guān)于Java內(nèi)部類和匿名類的一些基本介紹,它們可以使代碼更加簡(jiǎn)潔和靈活。