JAVA总结篇九(内部类)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/imjavaxb/article/details/80400627

内部类

一、常规内部类

常规内部类示列:

package com.inner;

public class CommonInner {
    public static void main(String[] args) {
        CommonInner.TestInner in = new CommonInner().new TestInner();
        in.innerTest();
    }
    public void outTest(){
        System.out.println("外部类方法");
    }

    public class TestInner {
        public void innerTest() {
            System.out.println("常规内部类方法");
            new CommonInner().outTest();
        }
    }

}

用外部实例化对象直接实例化内部类即可

二、静态内部类

静态内部类示列:

package com.inner;

public class StaticInner {
    public static void main(String[] args) {
        new StaticInner.TestInner().innerTest();
    }

    public void outTest() {
        System.out.println("外部类方法");
    }

    public static class TestInner {
        public void innerTest() {
            System.out.println("静态内部类方法");
            new StaticInner().outTest();
        }
    }

}

由于有static修饰,因此只需用外部类对象直接调用便可,无需实例化

三、局部内部类

局部内部类示列:

package com.inner;

public class PartInner {
    public static void main(String[] args) {
        System.out.println(new PartInner().test().toString());
    }

    public Object test() {
        class TestInner {
            public String toString() {
                String str = new PartInner().outTest();
                return str;
            }
        }
        return new TestInner();
    }

    public String outTest() {
        return "外部类方法";
    }

}

局部内部类只有通过所在方法进行调用,也就是说,该类只有在所在的方法内调用,只能在局部调用

四、匿名内部类

匿名内部类示列:

package com.inner;

public class NewInner {
    public static void main(String[] args) {
        Inner in = new Inner() {
            public void test() {
                System.out.println("局部内部类1");
            }
        };
        in.test();
    }
}

package com.inner;

public interface Inner {
    void test();

}

匿名内部类的创建一般只是在类只使用一次的情况下使用,匿名内部类的创建必须实现一个接口或继承一个类,该类中的方法通过接口或父类进行调用。

猜你喜欢

转载自blog.csdn.net/imjavaxb/article/details/80400627
今日推荐