内部类是指在一个类的内部嵌套定义的类,可以是静态内部类、非静态内部类或匿名内部类。内部类可以访问外部类的私有属性和方法,也可以通过外部类对象引用自身。
下面是一个简单的Java内部类的例子:
java复制代码
public class OuterClass { | |
private int outerVar = 10; | |
public void outerMethod() { | |
InnerClass inner = new InnerClass(); | |
inner.innerMethod(); | |
} | |
public static class InnerClass { | |
private int innerVar = 20; | |
public void innerMethod() { | |
System.out.println("Inner class variable: " + innerVar); | |
System.out.println("Outer class variable: " + outerVar); | |
} | |
} | |
} |
在这个例子中,OuterClass是一个外部类,而InnerClass是一个静态内部类。在outerMethod()方法中,创建了一个InnerClass对象,并调用了它的innerMethod()方法。在innerMethod()方法中,可以访问外部类的私有变量outerVar。
如果要在非静态内部类中访问外部类的变量或方法,需要通过外部类对象进行引用。下面是一个非静态内部类的例子:
java复制代码
public class OuterClass { | |
private int outerVar = 10; | |
public void outerMethod() { | |
InnerClass inner = new InnerClass(this); | |
inner.innerMethod(); | |
} | |
public class InnerClass { | |
private int innerVar = 20; | |
private OuterClass outer; | |
public InnerClass(OuterClass outer) { | |
this.outer = outer; | |
} | |
public void innerMethod() { | |
System.out.println("Inner class variable: " + innerVar); | |
System.out.println("Outer class variable: " + outer.outerVar); | |
} | |
} | |
} |
在这个例子中,InnerClass是一个非静态内部类,它有一个私有成员变量outer,用于引用外部类对象。在outerMethod()方法中,创建了一个InnerClass对象,并将外部类对象作为参数传递给它的构造函数。在innerMethod()方法中,通过outer对象引用了外部类的私有变量outerVar。
//方法的调用规则无疑(内外可以相互访问)
匿名内部类