我是Java的新手,我无法理解为什么在c3.java中我在ref.x = 1中收到错误。 x被声明为受保护的属性,因此从c1继承的类的方法应该能够使用任何类型为c1的对象的x。怎么回事? enter image description here
答案 0 :(得分:0)
这里的问题是该方法接受C1对象作为参数。这意味着课程不能改变它的价值。该方法不应该访问对象的受保护属性。受保护只意味着属性是继承的,它们只存在于继承的类的对象中。因此,由于C3继承自C1,所以C3将x作为受保护变量,但它只能在类的方法中修改。由于C1作为参数传递给C3类中的方法,你不在C1类中,因此不能修改C1对象的x变量。