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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 越雪 中级黑马   /  2017-4-12 22:42  /  1241 人查看  /  5 人回复  /   2 人收藏 转载请遵从CC协议 禁止商业使用本文

如果内部类被静态修饰,相当于外部类,会出现访问局限性,只能访问外部类中的静态成员。
       
        注意;如果内部类中定义了静态成员,那么该内部类必须是静态的。


这是在毕老师的笔记中找到,不是很理解?   求解释一下?

静态的内部类相当于外部类的静态方法吗?只能访问外部类的静态成员??  为什么说他相当于外部类?
内部类如果有静态成员的,,为啥类也必须是静态的???



评分

参与人数 3黑马币 +15 收起 理由
李梓 + 5
Royal592 + 5
qq375746667 + 5 可以可以

查看全部评分

5 个回复

倒序浏览
你可以把内部类当成外部类的成员,那么静态内部类是不是相当于外部类的静态成员?静态成员是不依赖对象而存在的,可以直接类名调用,类加载的时候就已经加载好了。但他又不是一个静态成员,而是一个类,他已经独立于外部类了,所以他已经不依赖他的外部类了,相当于外部类。至于第二点,因为成员内部类中是不能定义静态成员的,成员内部类你可以看成是外部类的成员变量,所以定义了静态成员就只能是静态内部类。
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
zeng1002 发表于 2017-4-13 00:15
你可以把内部类当成外部类的成员,那么静态内部类是不是相当于外部类的静态成员?静态成员是不依赖对象而存 ...

第一点解释我看懂了,第二点的解释不怎么懂
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
成员内部类为啥不能定义静态变量,定义了,类也必须是静态的呢???
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
越雪 发表于 2017-4-13 00:20
成员内部类为啥不能定义静态变量,定义了,类也必须是静态的呢???

因为成员内部类你可以看成是外部类的非静态成员,外部类加载的时候它已经被加载到方法区的非静态区了,但它毕竟是一个类,里面还可以定义成员和方法,而静态属性和方法都是加载到静态区的,所以这个类在定义成员和方法的时候定义静态的,编译器会认为你在非静态区加载静态属性和方法,这是不允许的
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马