A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 鲁行 中级黑马   /  2014-10-6 00:11  /  1139 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

内部类:       
        成员内部类:可以访问外部类的所有成员(包括被static和private修饰的成员)
                外部类要访问内部的成员,要创建内部类对象。
                非静态的内部类中不能创建静态的成员

                创建成员内部类对象的格式:
                        外部类名.内部类名 对象名 = new 外部类名.new 内部类名();
                       
                思维拓展:如果想访问父类中被private修饰的成员,除了让父类自己调用外,
                还可以在父类中的创建成员内部类通过这个内部类来访问。

                静态内部类:被static修饰的成员内部类,就被称为静态内部类。
                静态内部类只能访问外部类的静态成员。
                而静态内部类的所有成员都可以被所在的外部类访问。

                创建静态内部类对象的格式:
                        外部类名.内部类名 对象名 = new        外部类名.内部类名();

                记忆法:创建对象,就是调用构造函数的过程。由于成员内部类不是静态的所以不能用外部类名
                                直接调用,而静态内部类可以用外部类名直接调用。
                       
        局部内部类(方法内部类):
                方法中定义的类。
               
        注意:
                局部内部类访问局部变量,该变量必须被final修饰。
                (面试题:
                因为局部变量在栈内存中随着方法的调用结束而消失,而局部内部类存在于堆内存中
                如果该内部类中还有地方使用着局部变量,那么该变量就必须还存在,所以必须用final修饰)

        如果父类或者父接口出现的地方,完全可以用子类对象替代。

       


        匿名内部类的使用:(没有名字的局部内部类)

        前提:
                必须存在一个类,抽象类或者接口。

        格式:
                new 类名或者接口名()
                {
                        重写类或者接口中的方法。
                        也可以自己定义新的方法。
                };

        理解:是一个继承了类或者实现了接口的匿名的子类对象。
               

        什么时候使用匿名内部类呢?
               
                一般来说,当接口或者抽象类中的方法在3个以下的时候,考虑使用匿名内部类。
                在看到有一个方法接收的形式参数是一个抽象类或者接口的时候,
                就可以考虑采用匿名内部类实现。

评分

参与人数 1技术分 +1 收起 理由
敏敏好学 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
我也学到这里了 共勉啊
回复 使用道具 举报
赞一个,一起学!
回复 使用道具 举报
多谢楼主分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马