为了账号安全,请及时绑定邮箱和手机立即绑定

内部类

标签:
Java

第一部分:内部类的类文件
对于每个内部类,Java编译器会生成独立的.class文件。这些类文件的命名规则如下:
1)成员内部类:外部类的名字$内部类的名字。
2)局部内部类:外部类的名字$数字和内部类的名字。
3)匿名类:外部类的名字$数字。
以下程序中定义了各种类型的内部类:

class A{

    static class B{    //成员内部类,对应A$B.class
    }

    class C{      //成员内部类,对应A$C.class

        class D   {    //成员内部类,对应A$C$D.class

        }

    }
    public void method(){
        class E{}//局部内部类 1,对应A$1E.class
        B b=new B(){};//匿名类 1,对应A$1.class
        C c=new c(){};//匿名类 2,对应A$2.class
    }

    public void method2(){
        class E{}//局部内部类 2,对应A$2E.class
    }
}

变量按照作用于可以划分为:成员变量和局部变量。
成员变量分为实例变量,静态变量。
内部类分为成员内部类和局部内部类。
成员内部类分为实例分为实例内部类和静态内部类。

第二部分:子类与父类中的内部类同名

class Outer{
    Inner in;
    Outer(){
    in=new Inner();//构造Outer.Inner类的实例
    }
    public class Inner{
        public Inner(){
            System.out.println("inner of Outer");
        }
    }
}
public class SubOuter extends Outer{
    class Inner{
        public Inner(){

            System.out.println("inner of SubOuter");
        }   
    }
    public static void main(String args[]){
        SubOuter.Inner in1=new SubOuter().new Inner();

        //在创建SubOuter.Inner的实例的时候会调用父类的构造方法,
        //父类的构造方法又会创建构造Outer.Inner类的实例,所以这里的打印结果为:
        //inner of Outer和inner of SubOuter

        Outer.Inner in2=new Outer().new Inner();

        //在创建Outer.Inner的实例的时候,分为两步:首先创建外部类的实例,
        //调用外部类的构造方法,外部类的构造方法又会去调用内部类的构造方法。
        //然后在创建内部类的实例,调用内部类的构造方法。
    }
}
点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消