内部类
在一个类的内部定义另外一个类
成员内部类
- 类中定义,和方法平级
- 可以获得外部类的私有属性
- 一方面,作为外部类的成员:
- 调用外部类的结构(注意静态加载的早不能调用非静态)
- 可以被static修饰
- 可以被四种不同的权限修饰
- 另一方面,作为一个类
- 可以定义属性、方法、构造器等
- 可以被final修饰,表示此类不能被继承。(不使用final可以被继承)
- 可以被abstract修饰
Outer.Innerinner=newOuter.Inner();
// 静态的成员内部类
Personp=newPerson();
Person.Birdbird=p.newBird(); // 非静态的成员内部类
静态内部类
- 类中定义(带static)
public static class 类名{}
- 没办法直接获得外部类的私有属性(static和外部类一起加载)
一个Java文件中可以有多个class类,但是只能有一个public class
局部内部类
一个类的方法中定义一个类
匿名内部类
没有名字初始化类,不用将实例保存到变量中
new 类名().方法名()
直接使用只能用一次
Apple无继承的匿名内部类,UserService是继承的匿名内部类