局部内部类和匿名内部类

发布时间 2023-10-16 23:57:11作者: 奈格里-
//局部类
package com_black.InnerClass.jubu_neibulei;

public class Outer {
    private int m=66;
    public void method(){
        int m2=99;
        class In{
            public void show(){
                System.out.println(m);
                System.out.println(m2);
            }
        }
        In a=new In();
        a.show();
    }
}
package com_black.InnerClass.jubu_neibulei;

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



//匿名类
package com_black.InnerClass.niming_neibulei;

public interface Inter {
    void show();
}
package com_black.InnerClass.niming_neibulei;
/*
前提:
    存在一个类或者接口
    这里的类可以是具体的类也可以是抽象类
格式:
    new类名或者接口名(){
        重写方法;
    };
 */
public class Outer {
    public void method(){
        /*
        new Inter(){
            @Override
            public void show(){
                System.out.println("匿名内部类");
            }
        };      //执行之后无结果
         */
        new Inter(){
            @Override
            public void show(){
                System.out.println("匿名内部类");
            }
        }.show();//调用一次

        //多次调用
        Inter i= new Inter(){
            @Override
            public void show(){
                System.out.println("匿名内部类");
            }
        };
        i.show();
        i.show();//此时调用了两次
    }
}
package com_black.InnerClass.niming_neibulei;

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