定义格式:
1 class Outer{ 2 class Inner{ 3 public void show(){ 4 System.out.println("Run..."); 5 } 6 } 7 }
内部类访问特点:
1.内部类可以直接访问外部类中的成员;
2.外部类要访问内部类,必须简历内部类的对象。
内部类使用环境:
分析事物时,发现该事物描述中还有事物,而且这个事物还在访问被描述事物的内容,这时还有的事物定义成内部类来描述。
修饰符:
因为内部类是在外部类内中,相当于是外部类的成员,所以会有成员修饰符:public default private。另外还有static。
访问内部类:
1.无静态
Outer.Inner in = new Outer().new Inner();
2.如果内部类是静态的,就相当于一个外部类: Outer.Inner in = new Outer.Inner();
但是静态成员只能访问静态变量,所以外部类中的成员变量要是静态的。
3.如果内部类是静态的,成员也是静态的,则:Outer.Inner.show();
如果内部类中定义了静态成员,则该内部类必须是静态类。
访问特性:(Outer.this.num访问的是外部类里的成员变量num)
1 public class NeiBu { 2 public static void main(String[] args) { 3 System.out.println("Hello,This is Function main..."); 4 new Outer().new Inner().show(); 5 } 6 } 7 8 class Outer{ 9 int num = 3; 10 class Inner{ 11 int num = 4; 12 public void show(){ 13 int num = 5; 14 System.out.println(Outer.this.num); 15 } 16 } 17 }
匿名内部类:
匿名内部类就是内部类的简写格式。
必须有前提:内部类必须继承或者实现一个外部类或者接口。
代码演示:
1 public class NeiBu { 2 public static void main(String[] args) { 3 System.out.println("Hello,This is Function main..."); 4 new Outer().method(); 5 } 6 } 7 8 abstract class Demo{ 9 abstract void show(); 10 } 11 12 class Outer{ 13 public void method(){ 14 new Demo(){ 15 void show(){ 16 System.out.println("This is ...."); 17 } 18 }.show(); 19 } 20 }