一、静态内部类:
1.静态内部类,静态内部类对象可以不依赖于外部类对象,直接创建。
2.静态内部类中,只能直接访问外部类的静态成员,如果需要调用非静态成员,可以通过实例对象实例。
3.静态内部类对象实例时, 可以不依赖于外部类对象
4.可以通过外部类.内部类.静态成员的方式, 访问内部类中的静态成员。
5.当内部类属性与外部类属性同名时,默认直接调用内部类中的各成员。
6.如果需要访问外部类中的静态属性,则可以通过外部类().属性的方式。
二、方法内部类
1.定义在外部类方法中的内部类,也称局部内部类。作用范围也在方法内。
2.和方法内部成员使用规则一样,class前面不可以添加public,private,protected,static
3.类中不能包含静态成员。
4.类中可以包含final、abstract修饰的成员。
回顾:方法内定义的局部变量只能在方法中使用。
方法当中不能定义静态成员。
不能通过public private protected修饰符进行成员的访问设定。
三、匿名内部类
之前学的都是class 类名{},然后通过类名 对象名 = new构造方法();将类的定义与类的创建,放到一起完成。
使用场景:只用到类的一个实例;类在定义后马上用到;给类命名并不会导致代码更容易被理解。
匿名内部类没有类型名称、实例对象名称。
编译后的文件命名:外部类$ 数字.class
无法使用private、public、abstract、static、protected修饰。
无法在内部写构造方法。
不能出现静态成员。
匿名内部类可以实现接口也可以继承父类,但是不可兼得。