内部类.Java学习

今天复习一下Java里面一个比较重要的概念  内部类

 局部内部类

  1. 内部类是定义在一个类的内部。通常是在方法中。
  2. 本质还是一个类,可以访问外部类的所有成员,包含私有的。
  3. 不能使用访问修饰符。但是可以使用final修饰符。
  4. 作用域尽在定义它的方法或者代码块中。
  5. 外部其他类不能访问局部内部类(因为局部内部类的地位就是衣个局部变量)。
  6. 如果外部类和局部类的成员变量重名。遵守就近原则。如果要访问外部类变量。 可以通过 类型.this.成员 去访问。

匿名内部类

  1. 该类没有名字。
  2. 是一个对象。
  3. 定义外部类的局部位置,比如方法中,并且没有类名。(系统底层会分配一个类型)。
  4.  匿名内部类使用一次就没了(生成的对象是可以多次使用)。
  5. 匿名内部类是为了简化开发。

 

 1   package  anonymous;  2  
 3   public   class  InnerClass {  4       public   static   void  main(String[] args) {  5           new  Test().run();  6   }  7   }  8  
 9  
 10   class  Test {  11  
 12       public   void  run() {  13          Animal dog =  new  Animal() {  14   @Override  15               public   void  Say() {  16                  System.out.println("小狗汪汪" );  17                  System.out.println( this  .getClass());  18   }  19   };  20   dog.Say();  21   }  22   }  23  
 24  
 25   interface  Animal {  26       void  Say();  27  }

 


----------
输出结果。

小狗汪汪
class anonymous.Test$1

成员内部类

  1.  定义为的位置是成员位置。
  2. 外部其他类可以调用成员内部类。

 

 1   package  anonymous;  2  
 3   public   class  MemberInnerClass {  4       public   static   void  main(String[] args) {  5          Test01 test01 =  new  Test01();  6          Test01.InnerClass innerClass = test01. new  InnerClass();  7   innerClass.Run();  8   }  9   }  10  
 11   class  Test01 {  12  
 13       class  InnerClass {  14           public   void  Run() {  15              System.out.println("这是成员内部类" );  16   }  17   }  18  }

 

静态内部类

  1. 静态内部类还是定义在成员位置,但是他有static修饰。
  2. 可以直接访问外部类的所有静态成员,包括私有的。但是不能直接访问非静态的成员。

 

标签: Java

添加新评论