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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨华东 中级黑马   /  2012-10-9 14:39  /  1293 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

定义在 成员变量位置上的
内部类(inner class)和
定义在成员方法上的内部类有啥不一样????

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

2 个回复

正序浏览
内部类:
        将一个类定义在另一个类里面。对里面那个类就称为内部类。(内置类,嵌套类)

        访问特点:
                内部类可以直接访问外部类中的成员。
                外部类要访问内部类中的成员必须创建内部类的对象。
       

        为什么要定义内部类呢?
        类是用于描述事物的,而事物中如果还有具体的事物,而且这个内部的事物在访问着所属事物中的内容。

        这个时候这个内部的事物,也需要用到类来描述,这个类就是内部类。

        为什么内部类可以直接访问外部类中的成员呢?
        因为内部类都持有一个外部类的引用。外部类名。this

内部类的修饰符:
               
        当内部类定义在外部类的成员位置上时,可以使用成员的修饰符来进行内部类的修饰。
一。权限修饰符:        1,默认的:直接在其他类中,访问一个类的内部类。
                                格式 new 外部类名().new 内部类名().内部类的方法();
                                可以写成:外部类名.内部类名  变量名 = new 外部类对象.new 内部类对象;
                                内部类必须有所属。
               
                        2,公有的:和默认的一样。

                        3,私有的:是不可以直接在外部访问的。

二.static修饰符       
                内部类一旦加了静态,出现访问局限性,只能访问外部类中的静态成员。
                内部类被静态后,会随着外部类的加载而加载。

                类什么时候用,什么时候进内存。
                访问出现了局限性。
               
                访问静态内部类中的非静态成员。
                直接new内部类的对象,
                外部类名.内部类名 变量名 = new 外部类名.内部类名();
               
                访问静态内部类中的静态成员:不需要对象。

                外部类名.内部类名.内部类里面的静态方法();


                如果内部类中定义了静态成员,该内部类必须被静态修饰,否则编译失败。

记住:只有内部类定义在外部类的成员位置上,才具备这些修饰符。


内部类也可以定义在外部类中的局部位置上。(不能被静态修饰,局部位置上不能定义静态)
        1,可以访问外部类的成员变量,
        2,局部的不可以访问,

内部类定义在局部位置上,不允许访问局部中的变量。只能访问被fianl修饰的局部常量。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
1.成员内部类
成员内部类内不允许有任何静态声明!下面代码不能通过编译。
    class Inner{
        static int a = 10;
    }
能够访问成员内部类的唯一途径就是通过外部类的对象!
2.方法内部类只能在定义该内部类的方法内实例化,不可以在此方法外对其实例化。
方法内部类对象不能使用该内部类所在方法的非final局部变量。
因为方法的局部变量位于栈上,只存在于该方法的生命期内。当一个方法结束,其栈结构被删除,局部变量成为历史。但是该方法结束之后,在方法内创建的内部类对象可能仍然存在于堆中!例如,如果对它的引用被传递到其他某些代码,并存储在一个成员变量内。正因为不能保证局部变量的存活期和方法内部类对象的一样长,所以内部类对象不能使用它们。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马