内部类、嵌套类

注意:java编译器编译任何一个类时,会为其产生一个.class文件,嵌套类就会产生两个.class文件。

 1 public class Outer {
 2 
 3     /**
 4      * @param args
 5      */
 6     int outer_in = 100;
 7     public class Iner{ // 内部类只能在外部类使用
 8         int iner_in = 50;
 9         public void display(){
10             System.out.println(outer_in); // 内部类可以直接访问外部类的成员函数
11         }
12     }
13     public void Test(){
14         //iner_in = 500; // 外部类不能直接访问内部类中的成员函数,只能通过对象访问
15         Iner in = new Iner();
16         in.display();
17         System.out.println(in.iner_in);
18     }
19     public static void main(String[] args) {
20         // TODO Auto-generated method stub
21         Outer o1 = new Outer();
22         o1.Test();    
23     }
24 
25 }

输出:100
内部类保存着外部类的一个this指针,所以能够访问到外部类。如果把内部类改为静态类(this消掉),则外部类和内部类不存在任何关系。

把两个看成没有关系的类就可以了... (当定义一个内部类的对象时,用OutClass.InerClass obj)

2、内部类的访问[注意]

  内部类为一般类时:

    OuterClass obj1 = new OuterClass();

    OuterClass.InerClass obj2 = obj1.new InerClass();

   内部类为静态类时:

        OuterClass.InerClass obj3 = new  OuterClass.InerClass();

原文地址:https://www.cnblogs.com/xuxu8511/p/2496544.html