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

© 景彬 中级黑马   /  2015-5-28 20:10  /  1892 人查看  /  37 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.内部类:
        概念: 在一个类的内部,定义了一个新类
        位置:  
                成员位置:
                        成员内部类
                局部位置:
                        局部内部类
        特点:
                内部类可以直接访问外部类中的成员, 包含私有成员
                而外部类访问内部类的成员,必须要先创建内部类对象

2.成员内部类:
                格式:
                        class Outer(){
                                //成员内部类
                                class Inner{
                                        .....
                                }
                        }
        如何访问成员内部类
                方式1:  直接创建内部类对象
                        格式:
                        外部类名.内部类名 对象名 = new 外部类名().new 内部类名();
                方式2:        在外部类中,创建一个用来访问内部类成员的方法即可
                常用修饰符:
                        private : 为了提高数据的安全性
                        static  : 为了方便访问

3.局部内部类:
                格式:class Outer(){
                                public void method(){
                                        //局部内部类
                                        class Inner(){
                                                ......
                                        }
                                        Inner in = new Inner();
                                        in.成员;
                                }
                        }
当局部内部类访问外部类中的局部变量的时候, 外部类的局部变量要加final修饰。      
         
4.匿名内部类:
         概念: 就是没有名字的内部类
         使用匿名内部类的前提条件:
                要先定义好一个外部类, 或者定义好一个接口,才能使用匿名内部        类
                        如: interface Inter{
                                public abstract void show();
                            }
                创建匿名内部类
                        方式1:
                                new 外部类名(){
                                        //重写外部类中抽象方法
                                };
                        方式2:
                                new 接口名(){
                                        //重写接口中的抽象方法
                                };
                        如:new Inter(){
                                        public void show(){
                                            System.out.println("show");
                                        }
                            };
                注意:   匿名内部类 实际上可以理解为 是实现了该接口的子类对象,
                             或者可以理解为 是继承了外部类的子类对象
               总结:   可以理解为 匿名内部类, 就是一个子类对象
                            那么,我们就可以使用多态的方式
                            将子类对象 赋值 为 父类引用
                        如: Inter in = new Inter(){
                                                public void show(){
                                                            System.out.println("show");
                                                }                        
    };

37 个回复

倒序浏览
我今天被匿名内部类弄的脑袋都大了
回复 使用道具 举报
学习了谢谢
回复 使用道具 举报

一起学习:lol
回复 使用道具 举报
学习,谢谢。
回复 使用道具 举报
膜拜大神!!!
回复 使用道具 举报
都差不多
回复 使用道具 举报
不错不错
回复 使用道具 举报
不错,学习下,巩固下下
回复 使用道具 举报
我擦  总结 的很详细啊··················
回复 使用道具 举报
回复 币噢耶
回复 使用道具 举报
膜拜大神!!!
回复 使用道具 举报
qian0217wei 来自手机 高级黑马 2015-5-29 08:15:49
13#
匿名内部类有时写的好晕
回复 使用道具 举报
局部内部类用的比较少
回复 使用道具 举报
总结的很好呀 学习了
回复 使用道具 举报
来学习 支持下
回复 使用道具 举报
我也有点晕。。。。。。。
回复 使用道具 举报
总结的不错
回复 使用道具 举报
顶顶顶:victory:
回复 使用道具 举报
好好学内部类,很有用!
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马