1. 成员内部类
成员内部类对象的创建方法很神奇:
//先创建一个外部类HelloWorld对象
HelloWorld hello = new HelloWorld();
//创建一个内部类inner
inner i = hello.new inner();
而且一个外部类对象可以new好几个内部类对象。
使用注意:
- 不能用”外部类对象.内部类对象.方法”来调用方法,而是直接”内部类对象.方法”。
- 成员inner类相当于outer类的一个成员
- 内部类的方法可访问外部类的成员(包括protected和private),但外部类却不能访问内部类的属性和方法。
- 若内部类成员与外部类成员重名,则引用该外部类成员时需要使用:
外部类名.this.成员名;
- 内部类默认拥有外部类的
2.静态内部类
创建和访问静态内部类不需要外部类对象,直接使用一般类的创建方式和访问方式
//创建静态内部类
SInner i = new SInner();
//调用静态内部类中的方法(非静态)
i.method1();
使用注意:
- 静态内部类与成员内部类不同,静态内部类不能直接访问外部类的非静态成员,但可以通过new 外部类().成员的方式访问。
3.方法内部类
方法内部类就是在外部类方法中定义并使用的类,这中内部类智能在该方法中使用,并且在定义时不能用static和访问控制符修饰。