内部类

定义格式:

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 }
原文地址:https://www.cnblogs.com/thinksasa/p/2736054.html