java - 这个关键字如何访问类的私有(private)成员,而类本身的对象却不能

标签 java

我对这个关键字的概念有一点疑问,让我向您展示一个可以解释它的示例

public class InheritanceInJava
{
 public static void main(String args[])
 {
 A obj = new A(4,5);
 obj.num3 = 4; //using object to access private member of class which is not possible
 }
class A
{
 private int num1;
 private int num2;
 private int num3;
 A(int num1, int num2)
 {
 this.num1 = num1; //this keyword can access num1 in order initalize value 
 this.num2 = num2;
 }
} 

现在,根据 this 关键字 的定义, this 关键字 可用于从实例方法或构造函数中引用当前对象的任何成员。

由于这是对调用方法或构造函数的当前对象的引用,并且由于类本身的对象无法访问类的私有(private)成员,因此 this 关键字如何访问它?

如果我们看上面的例子:

this -> obj//this 引用调用构造函数或方法的当前对象

如果 obj.num3 = 4 或 obj.num1 = 6 无效。那么 this.num1 = num1 如何有效?

最佳答案

private 访问修饰符将这些变量的访问限制在顶级类内部。由于您是从顶级类内部调用 this (您必须这样做),因此您可以访问这些变量。

我说“顶级”类而不仅仅是类来涵盖嵌套类的情况(外部类可以访问其内部类的私有(private)字段)。

关于java - 这个关键字如何访问类的私有(private)成员,而类本身的对象却不能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40777721/

相关文章:

java - 在在线应用程序中使用Java Executor服务

java - 在电梯中实现优先队列

java - 进行强制转换时出现运行时异常

java - Android 使用访问 token 进行分段文件上传

java - 如何将bin文件读取到字节数组?

java - 安卓表情实现

java - 如何使用 Intellij Idea 的异常断点

jakarta-ee - 正确的 : Java "enterprise" edition = Java "internet" edition?

java - 当从队列收到消息时如何将json转换为bean

java - 为什么Java中的本地类不能有静态方法?