Java_basic_7: 内部类

2017-10-10  本文已影响0人  DiscoSOS

内部类(Inner class)的定义

内部类的作用

内部类的分类

成员内部类

成员内部类的使用方法:

public class Outer {
    private int a = 99;
    
    public class Inner{
        int b = 2;
        public void test() {
            System.out.println(a);  
            System.out.println(b);
        }
    }
    
    public static void mian(String args[]) {
        Outer outer = new Outer();
        Inner inner = outer.new Inner();
        inner.test();
    }

}

1、 Inner 类定义在 Outer 类的内部,相当于 Outer 类的一个成员变量的位置,Inner 类可以使用任意访问控制符,如 public 、 protected 、 private 等

2、 Inner 类中定义的 test() 方法可以直接访问 Outer 类中的数据,而不受访问控制符的影响,如直接访问 Outer 类中的私有属性a

3、 定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象,即:内部类 对象名 = 外部类对象.new 内部类( );

4、 编译上面的程序后,会发现产生了两个 .class 文件

静态内部类 static 修饰

public class SOuter {
    private int a = 99;
    static int b = 3;
    public static class SInner{
        int b  = 2;
        public void test() {
            System.out.println("访问外部类中的b " + SOuter.b   );
            System.out.println("访问内部类中的b " + b);
        }
    }
    
    
    public static void main(String args[]) {
        SInner si = new SInner();
        si.test();
    }

}

1、 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问

2、 如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员

3、 创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();

方法内部类

public class MOuter {
    //
    public void show() {
        final int a = 25;
        int b = 13;
        //
        class MInner{
            int c = 2;
            public void print() {
                System.out.println("访问外部类中的常量: " + a);
                System.out.println("访问内部类的变量    " + c);
            }
        }
        MInner mInner = new MInner();
        mInner.print();
        
    }
    
    public static void main(String args[]) {
        MOuter mOuter = new MOuter();
        mOuter.show();
    }

}
上一篇 下一篇

猜你喜欢

热点阅读