Java内部类是如何获取外部类的private属性

Java内部类是如何获取外部类的private属性,第1张

刚才想了很久,因为你问的太广阔了,内部类访问外部类属性分好多种情况
我感觉直接写了一个例子,截图比较直观一些,出错的地方,
都在关键位置打了标记,也有注释,把有可能出现的错误,我都写出来,也可能没写完
比如局部变量,常量,也是要注意的事情
篇幅有限,我把字体缩小到很多,才把图截全,有注释,把单独窗口打开可以放大,比较醒目一些:
有错的地方,欢迎指正,共同学习

在Java中,方法的局部变量位于栈上,对象位于堆上。因为局部变量的范围被限制在该方法内,当一个方法结束时,栈结构被删除,该变量消失。但是,定义在这个类中的内部类对象仍然存活在堆上,所以内部类对象不能使用局部变量。除非这些局部变量被标识为最终的。final int i=8;就可以

内部类就相当于一个外部类的成员变量,所以可以直接访问外部变量,外部类不能直接访问内部类变量,必须通过创建内部类实例的方法访问,
new InnerClass(32)m就是创建内部类实例访问内部类成员变量。
你想不通的肯定是指内部类的私有变量怎么可以被外部类访问吧,按常规,私有变量m只能在InnerClass里被访问,
但你要注意,内部类就相当于一个外部类的成员变量,举个例子。
class Outer{
private int m;
private class Inner{
private int n;
private int k;
}
}
m和类Inner都是成员变量,他们之间是平等的,唯一不同的就是Inner它是包装了几个成员变量比如n,k,也就是说m n k是平等的,区别在于访问n k要通过Inner,就是要建立Inner实例访问nk,这样解释够明白了吧


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12691361.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存