8.内部类

内部类可以直接访问外部类的成员,包括私有成员,但外部类如果要访问内部类,则需要创建内部类的对象,

1.成员内部类

 成员内部类常见修饰符

            1.private  成员内部类一般不想让外界直接访问,使用private 修饰符、

            2.static    静态内部类方便外界直接调用,当用static修饰后,内部类里的方法可以是静态或非静态的,但方法内访问外部类成员时,外部类成员必须是静态成员

   外界访问成员内部类的方式

           1非静态                外部类.内部类    变量名 =new 外部类().new 内部类();

           2静态static            外部类.内部类    变量名 =new 外部类.内部类();

2.局部内部类

         1.可以直接访问外部类成员

     2.在局部位置可以创建内部类对象,通过对象调用内部类方法

class Outer {
    private int num  = 10;
    
    public void method() {
        //int num2 = 20;
        //final int num2 = 20;
        class Inner {
            public void show() {
                System.out.println(num);
                //从内部类中访问本地变量num2; 需要被声明为最终类型
                System.out.println(num2);//20
            }
        }
        
        //System.out.println(num2);
        
        Inner i = new Inner();
        i.show();
    }
}

class InnerClassDemo5 {
    public static void main(String[] args) {
        Outer o = new Outer();
        o.method();
    }
}

    局部内部类访问局部变量的时候,局部变量必须使用final修饰

3.匿名内部类

         当抽象类或接口作为形式参数时,如果该方法只调用一次,我们可以用匿名内部类简化写法

             new 类名或接口名(){

                  重写方法

              }

          这种写法相等于一个重写了抽象类或接口作为父类的方法的子类

posted @ 2017-03-09 09:27  不识  阅读(127)  评论(0编辑  收藏  举报