通过类型转换对成员的Java访问

通过类型转换对成员的Java访问,java,Java,我无法理解下面的方法是如何工作的。 我有用于乘法的类Calc和方法,第一个方法使用典型的getter,第二个方法可以通过类型转换直接访问私有属性。我的问题是,number1如何能够访问number2的私有属性 private int number; public Calc multiplication(Calc z) { return new Calc(this.number*z.getNumber()); } public Calc multiplication(Ca

我无法理解下面的方法是如何工作的。 我有用于乘法的类Calc和方法,第一个方法使用典型的getter,第二个方法可以通过类型转换直接访问私有属性。我的问题是,number1如何能够访问number2的私有属性

private int number;

public Calc multiplication(Calc z)
 {
        return new Calc(this.number*z.getNumber());
 }

 public Calc multiplication(Calc z)
 {
        return new Calc(this.number*((Calc)z).number);
 }

test()
{
number1 = new Calc(2);
number2 = new Calc(3);
number1.multiplication(number2);
}
发件人:

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

成员是否属于同一类的不同实例并不重要。只要类相同,一个实例中的方法就可以访问另一个实例的
private
成员。

来自:

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


成员是否属于同一类的不同实例并不重要。只要类相同,一个实例中的方法就可以访问另一个实例的
private
成员。

这里number1对象引用不是直接访问number变量,而是在number2对象引用的帮助下访问,反之亦然

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


成员是否属于同一类的不同实例并不重要。只要类是相同的,一个实例中的方法就可以访问另一个实例的私有成员。

这里number1对象引用不是直接访问number变量,而是在number2对象引用的帮助下访问,反之亦然

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


成员是否属于同一类的不同实例并不重要。只要类相同,一个实例中的方法就可以访问另一个实例的私有成员。

这就是Java中访问修饰符的工作方式。你不是第一个评论这有点奇怪的人。顺便说一句,你不需要将
z
转换为
Calc
-它已经是
Calc
。z已经是一个Calc了为什么要使用类型转换为((Calc)z)?我称之为shenanigans,这不能用两个具有完全相同签名的方法编译。这就是Java中访问修饰符的工作方式。你不是第一个评论这有点奇怪的人。顺便说一下,您不需要将
z
转换为
Calc
-它已经是
Calc
。z已经是一个Calc了为什么要使用类型转换为((Calc)z)?我称之为shenanigans,这不能用两个具有完全相同签名的方法编译。