Java内部类

1.匿名内部类:匿名类是指没有类名的内部类,必须在创建时使用 new 语句来声明类。匿名类的两种实现:继承一个类,重写其方法;实现一个接口(或多个),实现其方法。匿名类的特点:匿名类可以访问外部类的所有成员;匿名类中允许使用非静态代码块进行成员初始化操作;匿名类的非静态代码块会在父类的构造方法之后被执行。

public class Test8 {
    void a() {
        System.out.println("a()");
    }

    public static class A {
        private void a() {
            Test8 t = new Test8() {
                void a() {
                    System.out.println("匿名类a()");
                }
            };
            t.a();
        }

        public static void main(String[] args) {
            A a1 = new A();
            a1.a();
        }
    }
}

2.再访工厂方法:

interface A2 {
    void a();

    void b();
}

interface B2 {
    A2 getA();
}

class C2 implements A2 {
    @Override
    public void a() {
        System.out.println("a()");
    }

    @Override
    public void b() {
        System.out.println("b()");
    }

    public static B2 b2 = new B2() {
        @Override
        public A2 getA() {
            return new C2();
        }
    };
}

public class Test7 {
    public static void test(B2 b3) {
        A2 a2 = b3.getA();
        a2.a();
        a2.b();
    }

    public static void main(String[] args) {
        test(C2.b2);
    }
}

3.嵌套类:在另外一个类中定义一个类,这样的类被称为嵌套类。如果不需要内部类对象与外部类对象之间有联系,将内部类声明为static。创建嵌套类的对象,不需要外部类的对象。嵌套类的对象只能访问外部类的静态对象。嵌套类可以不实例化外部类,可以直接使用 外部类名.静态嵌套类名 访问。

public class Test9 {
    static int i = 10;

    static class A {
        static void a() {
            System.out.println(i);
        }

        public static void main(String[] args) {
            Test9.A.a();
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值