受保护的属性和继承 java



我是Java的新手,我不明白为什么在c3中.java我在ref.x=1中得到一个错误。 x 被声明为受保护的属性,因此从 C1 继承的类的方法应该能够使用任何类型为 C1 的对象的任何 x。怎么会错呢?在此处输入图像描述

这里的问题是该方法将 C1 对象作为参数。这意味着类不能更改其值。该方法不应有权访问对象的受保护属性。受保护仅意味着属性是继承的,并且它们仅存在于继承的类的对象中。因此,由于 C3 继承自 C1,因此 C3 将 x 作为受保护变量,但它只能在类的方法中进行修改。由于 C1 作为参数传递给类 C3 中的方法,因此您不在类 C1 中,因此无法修改 C1 对象的 x 变量。

最新更新