【问题标题】:Private Access modifier in Java [duplicate]Java中的私有访问修饰符[重复]
【发布时间】:2021-08-25 07:11:56
【问题描述】:

在下面的代码中,'z' 是 ComplexNumber 类中的私有变量,所以当我在类解决方案的主函数中使用'c2.Z' 访问它时,会出现一个错误,这绝对没问题,因为 z 是私有变量并且只能可以在 ComplexNumbers 类中访问,但在复数类的 sum() 函数中,当我通过执行“C2.Z”访问复数类的对象 C2 的 z 时,我没有收到任何错误。为什么 ?。当我在 sum 函数中执行 C2.Z 时,我不应该得到错误吗,因为 z 是私有变量,我正在使用对象 C2 访问它。

public class OOPS1 
{
    public static void main(String args[])
    {
        ComplexNumbers c1 = new ComplexNumbers(2);
        ComplexNumbers c2 = new ComplexNumbers(20);
        int sum = c1.sum(c2);
        print(c2.z);
        System.out.println(sum);
    }
}

class ComplexNumbers
{
    private int z;
    
    ComplexNumbers(int value)
    {
        this.z = value;
    }
    
    int sum(ComplexNumbers C2)
    {
        z = z + C2.z;
        return z;
    }
}

【问题讨论】:

  • private 变量和方法始终可以在它们所在的类中访问,无论实例如何
  • 感谢您的帮助

标签: java oop


【解决方案1】:

根据Oracle's documentation

private修饰符指定该成员只能在自己的类中访问

注意它指定了class不是instance。这意味着来自给定类的对象确实可以访问来自同一类的其他对象的私有成员。

这在例如实现equals 时通常很有用

【讨论】:

  • 感谢您的帮助
猜你喜欢
  • 2016-01-28
  • 2015-11-26
  • 2013-07-29
  • 2015-05-02
  • 2017-12-22
  • 2018-02-13
  • 2017-05-16
  • 2014-06-26
  • 2014-08-27
相关资源
最近更新 更多