内部类实例创建

  1. public class OuterClass {  
  2.    
  3.     public static void main(String[] args) {  
  4.         OuterClass outerClass = new OuterClass();  
  5.         InnerClass innerClass = outerClass.new InnerClass();  
  6.         StaticInnerClass staticInnerClass = new StaticInnerClass();  
  7.     }  
  8.    
  9.     public void foo() {  
  10.         InnerClass innerClass = new InnerClass();  
  11.         StaticInnerClass staticInnerClass = new StaticInnerClass();  
  12.     }  
  13.    
  14.     public class InnerClass {  
  15.    
  16.     }  
  17.    
  18.     public static class StaticInnerClass {  
  19.    
  20.     }  
  21. }  

 

1:非静态内部类,必须有一个外部类的引用才能创建。


2:在外部类的非静态方法中,因为有隐含的外部类引用this,所以可以直接创建非静态内部类。


3:在外部类的静态方法中,因为没有this,所以必须先获得外部类引用,然后创建非静态内部类。


4:静态内部类,不需要外部类引用就可以直接创建。


5:同时静态的内部类,也不能直接访问外部类的非静态方法。


6:由此可以推测,非静态内部类之所以可以直接访问外部类的方法,是因为创建非静态内部类时,有一个隐含的外部类引用被传递进来。

posted @ 2016-11-22 16:26  He_quotes  阅读(328)  评论(0)    收藏  举报