内部类访问访问其他成员限制

IT程序员开发必备-各类资源下载清单,史上最全IT资源,个人收藏总结!



分两种情况:

    一、内部类作为类的成员

      1.如果内部类是静态的

         该内部类访问外部类的成员:只能访问外部static标识的成员。

         该内部类方法访问内部类的成员:无限制。

      2.如果内部类是非静态的

          没什么限制。只是内部类中定义的变量不能再用static修饰了,这与static method内部定义int i = 2;但是 method 方法中不能定义static int i = 2是一个道理。

 

    二、方法中定义内部类

       该内部类访问外部类的成员能否取决于该方法是否是static的,如果是static,则只能访问外部类中的static变量;如果不是static,则可以访问。

       该内部类访问方法中定义的成员:只能访问方法中final标识的成员。

   代码:

     

package edu.text;

 public class Outer {
   private int int1 = 1;
   private static int int2 = 2;
   private final int int3 = 3;
   
   public  void say(){
     String str1 = "str1";
     final String str2 = "str2";
     class Inner2{
         String str3 = "str3";
         final String str4 = "str4";
         void speakChinese() {
             System.out.println(int1);
             System.out.println(int2);
             System.out.println(int3);
             //System.out.println(str1);//error
             System.out.println(str2);
             System.out.println(str3);
             System.out.println(str4);
        }
     }
    
   }
   class Inner1{
       private int int4 = 4;
       // private static int int5 = 5;//error
       private final int int6 = 6;
       public void eat(){
          System.out.println(int1);
          System.out.println(int2);
          System.out.println(int3);
          System.out.println(int4);
          System.out.println(int6);
      }
       
   }
   
}

你可能感兴趣的:(String,Class)