在Java類(lèi)中,可以通過(guò)定義內(nèi)部類(lèi)(Inner Class)的方式來(lái)定義一個(gè)類(lèi)。內(nèi)部類(lèi)可以分為四種類(lèi)型:成員內(nèi)部類(lèi)、局部?jī)?nèi)部類(lèi)、匿名內(nèi)部類(lèi)和靜態(tài)內(nèi)部類(lèi)。下面是一個(gè)示例,展示了如何在一個(gè)Java類(lèi)中定義不同類(lèi)型的內(nèi)部類(lèi):
public class OuterClass {
// 成員內(nèi)部類(lèi)
class MemberInnerClass {
void display() {
System.out.println("This is a member inner class.");
}
}
// 靜態(tài)內(nèi)部類(lèi)
static class StaticInnerClass {
void display() {
System.out.println("This is a static inner class.");
}
}
public static void main(String[] args) {
// 創(chuàng)建成員內(nèi)部類(lèi)對(duì)象
OuterClass outer = new OuterClass();
OuterClass.MemberInnerClass memberInner = outer.new MemberInnerClass();
memberInner.display();
// 創(chuàng)建靜態(tài)內(nèi)部類(lèi)對(duì)象
OuterClass.StaticInnerClass staticInner = new OuterClass.StaticInnerClass();
staticInner.display();
// 局部?jī)?nèi)部類(lèi)(在方法內(nèi)部定義)
class LocalInnerClass {
void display() {
System.out.println("This is a local inner class.");
}
}
LocalInnerClass localInner = new LocalInnerClass();
localInner.display();
// 匿名內(nèi)部類(lèi)(沒(méi)有類(lèi)名的內(nèi)部類(lèi))
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("This is an anonymous inner class.");
}
};
new Thread(runnable).start();
}
}
在這個(gè)示例中,我們定義了一個(gè)外部類(lèi)OuterClass
,并在其中定義了成員內(nèi)部類(lèi)MemberInnerClass
、靜態(tài)內(nèi)部類(lèi)StaticInnerClass
、局部?jī)?nèi)部類(lèi)LocalInnerClass
和匿名內(nèi)部類(lèi)。然后在main
方法中,我們創(chuàng)建了這些內(nèi)部類(lèi)的對(duì)象并調(diào)用了它們的display
方法。