内部类应用场景
配合接口的使用,隐藏了具体实现类
public interface IInner {
void say();
}
public class TestCls {
String name = "ych";
public IInner getInner1() {
return new Inner();
}
public IInner getInner2() {
return new IInner() {
public void say() {
System.out.println("Hello2 " + name);
}
};
}
private class Inner implements IInner {
public void say() {
System.out.println("Hello1 " + name);
}
}
}
public class Application {
public static void main(String[] args) {
TestCls testCls = new TestCls();
IInner inner1 = testCls.getInner1();
inner1.say();
IInner inner2 = testCls.getInner2();
inner2.say();
}
}
非静态内部类和静态内部类
- 非静态内部类含有外部类的引用,可以使用外部类的实例成员变量和静态成员变量
- 非静态内部类中不能有静态成员,静态内部类中可以有