《解 惑》

       在学到Java中的内部类的时候就爆出来好多问题了,但为了赶进度就没来得及深究,这几天突然想到这个问题就研究了一下。

        这个问题就是内部类与外部类之间的成员引用,刚开始学到这的时候只是听老师说,内部类依赖于外部类的实例,而静态内部类中不能引用外部类中的普通成员,当时觉得记住了,但是当“静态,非静态”、“内部类,外部类”、“能、否、引用”,这些词以排列组合的形式组合在一起成为了多个不同的问题的时候就一脸懵逼了,就会想到老师没有讲过啊,然后去查一查资料找到了问题的答案,ok记住了这个答案,可是,换一个问题又要去查一次,并且重复出现也不见得能记住,所以为了打破这种知识对我单方面的智商垄断,我觉得应该自己去想一想到底为什么。

        ok废话不多说,当我听到老师说静态内部类中不能访问外部类中的非静态成员后,我就在想为什么,我当时想到应该是因为:之所以普通内部类可以直接访问外部类成员是因为这条语句生效的时候,外部类对象是一定存在的,因为内部类对象依赖于外部类的实例化嘛,但是如果内部类是静态的,ok,它不依赖于外部类的实例化,也就是说可以有一种局面存在,那就是静态内部类对象有了,但是外部类对象不存在,这样一来如果在静态内部类对象中访问外部类的成员必然是“违法”的。所以才有了这样一条语法,但是如果换一系列问题,比如:【(普通/静态)(外部类/内部类)可不可以直接访问(普通/静态)(内部类/外部类)中的(静态/普通)成员】这样的问题呢,是不是就比较头疼了(大佬除外),至少我在学这一块的时候比较乱。

        所以问题已提出,那么就该思考解决办法了,昨天想了许久总结出这么几条:1.静态成员只能被定义在不依赖于实例化的环境中。2.静态成员是独立的,与其所在的类是否实例化不相关,所以不管在哪(不准确,只是为了突出特点)都能被访问到。3.非静态成员高度依赖实例化,没有对象它就没有意义。所以通过鄙人粗略的总结这几点基本就可以解决上述问题了。

        这就是我当初在学这一块的时候比较乱的一块了,总结给大家,有不对的大家请指出,本人小白,勿喷

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值