1.顶级类


1) 可以定义任何静态和非静态的成员;


2) 顶级类不能是静态(static)的,若要加上其它关键字只能是public,final,abstract


3) 抽象类(abstract)和接口(interface)不能是final的.


4) 顶级类的静态方法中:可以直接访问该类的静态成员;访问非静态成员通过“new 顶级类().成员“的方法访问。访问静态内部类的成员通过“new 静态内部类().成员”的方法访问; 访问非静态内部类的成员通过“new 顶级类().new 非静态内部类().成员”方法访问.


5) 顶级类的非静态方法中:可以直接访问顶级类中的所有静态和非静态成员;访问静态内部类的成员和非静态内部类的成员方法一样,通过“new 静态内部类().成员”、“new 非静态内部类().成员”访问


2.非静态内部类

1) 非静态内部类中不允许定义静态的成员;


2) 非静态内部类非静态方法,访问静态内部类成员的方法:


      如下代码::

public 
 class 
  C1 {
 
  
 class 
  A {
 
      
 public 
 void 
  call() {
 
         System. 
 out 
 .println(B. 
 i 
 );  
 //  
 访问静态 
 B 
 类中的静态成员变量 
 i
 
          
 // new B() 
 可以访问静态类中的所有静态和非静态成员
 
         System. 
 out 
 .println( 
 new 
  B(). 
 k 
 );  
 //  
 访问静态 
 B 
 类中非静态成员变量 
 k
 
         System. 
 out 
 .println( 
 new 
  B(). 
 i 
 );  
 //  
 访问静态 
 B 
 类中的静态成员变量 
 i
 
     }
 
 }
 
  
 static 
 class 
  B {
 
      
 static 
 int 
 i 
 ,  
 j 
 ;
 
      
 int 
 k 
 ;
 
 }
 
}


3) 非静态内部类非静态方法中:可以直接访问该类的非静态成员、外部类内中的静态和非静态的成员;访问静态内部类和非静态内部类的成员的方法一样。


     >访问静态内部类       new 静态内部类().成员


     >访问非静态内部类     new 非静态内部类().成员


3.静态类内部类


1) 静态内部类中可以定义任何静态和非静态的成员;


2) 静态内部类里的静态方法中:可以直接访问该类和外部类中的静态成员,访问该类和外部类中成员通过创建对象访问,访问方法有:


     >访问外部类的成员方法                    new 外部类.成员;


     >访问外部类的非静态内部类成员的方法      new 外部类().new 非静态内部类().成员;


     >访问外部类的静态内部类成员的方法        new 静态内部类().成员;


3) 静态内部类里的非静态方法中:可以直接访问该类中的所有的非静态、静态成员和直接访问外部类中的静态成员;访问外部类中成员通过创建类对象访问,访问方法有:


>访问外部类的成员方法 
                    new 外部类.成员; 

 
 
      >访问外部类的非静态内部类成员的方法 
     new 外部类().new 非静态内部类().成员; 

 
 
      >访问外部类的静态内部类成员的方法 
       new 静态内部类().成员;


注:以上所说的“成员”包括“成员方法”“成员变量”“成员对象”,所说的“成员”可能是静态或是非静态的,如果这个类里的成员是静态的可以直接用“静态类.静态成员“,“非静态类.静态成员“方法引用。