内部类、局部内部类、静态内部类、匿名内部类

 调用内部类比较特殊:OuterClass.InnerClass innerClass = outerClass.new InnerClass();

public class OuterClass {
    private int i = 10;
    //1成员内部类
    class InnerClass{
        public void getOuterProperty(){
            System.out.println("【内部类获取外部类的私有属性的值】="+i);
        }
    }
    //2局部内部类
    public void getLocalClass(){
        class LocalClass{//局部内部类上不能有修饰符,或者只能有个final修饰符
            public int local_m1(){
                System.out.println("【局部内部类获取外部类私有属性】="+i);
                return (i + 100);
            }
        }
        LocalClass localClass = new LocalClass();
        int local_result = localClass.local_m1();
        System.out.println("【调用局部内部类方法的返回值+100】="+local_result);
    }

   //3静态内部类
    public static class StaticInnerClass{
        int i = 1000;
        public void staticInner_m1(){
            System.out.println("【静态内部类】="+i);
        }
    }
   //4匿名内部类
    Thread thread = new Thread(new Runnable() {
        @Override
        public void run() {
            System.out.println("【匿名内部类】");
        }
    });
   //4匿名内部类
    AnonymousClass anonymousClass = new AnonymousClass() {
        @Override
        public void anonymousClass_m1() {
            System.out.println("【匿名内部类】");
        }
    };
    public static void main(String[] args) {
        OuterClass outer = new OuterClass();

        //1调用成员内部类
        OuterClass.InnerClass ic = outer.new InnerClass();
        ic.getOuterProperty();

        //2调用局部内部类
        outer.getLocalClass();

        //3调用静态内部类
        StaticInnerClass sic = new StaticInnerClass();
        sic.staticInner_m1();

        //4调用匿名内部类
        Thread thread = outer.thread;
        thread.start();

        //4调用匿名内部类
        AnonymousClass ac = outer.anonymousClass;
        ac.anonymousClass_m1();
    }


}
interface AnonymousClass {
    void anonymousClass_m1();
}

 

 

 

posted @ 2022-05-31 20:33  禁止摆烂  阅读(25)  评论(0)    收藏  举报