1. 首页
  2. 编程语言
  3. Java
  4. Java中的private修饰符失效了?

Java中的private修饰符失效了?

上传者: 2022-01-20 14:50:01上传 PDF文件 89.22 KB 热度 9次

上面描述了private修饰符的基本职能,今天来研究一下private功能失效的情况。在Java中相信很多人都用过内部类,Java允许在一个类里面定义另一个类,类里面的类就是内部类,也叫做嵌套类。一个简单的内部类实现可以如下一个我们在编程中经常用到的场景,就是在一个内部类里面访问外部类的private成员变量或者方法,这是可以的。我们使用javap命令查看一下生成的两个class文件OuterClass的反编译结果this$0就是内部类持有的外部类引用,通过构造方法传递引用并赋值。那就是使用匿名内部类。由于mRunnable对象的类型为Runnable,而不是匿名内部类的类型,而Runanble中没有x这个属性,所以mRunnable.x是不被允许的。在本文中,private表面上看上去失效了,但实际上是没有的,而是在调用时通过间接的方法来获取私有的属性。

用户评论