从各种模式的角度来看,从其后代更改超类中的字段是可以接受的。例如:
class A {
int barA;
}
class B extends A {
private void testMethod() {
barA = 4;
}
}
提前致谢!
从各种模式的角度来看,从其后代更改超类中的字段是可以接受的。例如:
class A {
int barA;
}
class B extends A {
private void testMethod() {
barA = 4;
}
}
提前致谢!
如果您想在子类中更改它们的值,通常最好将所有字段设为私有,并提供公共或受保护的设置器。
不,这通常不是一个好主意。如果我明白你在问什么,通常会这样做
public class A{
private int val;
protected void setVal(int i){
val = i;
}
public int getVal(){
return val;
}
}
public class B extends A{
public void test(){
this.setVal(4);
}
}
是的,这很好。如果超类不希望子类修改值,它可以将它们设为私有。
当我们说 B 类扩展 A 时,我们的意思是它也继承了它的所有(超类,即 A 的)变量。所以现在 B 有了自己的变量 barA。因此,您可以像任何其他成员变量一样更改它。进一步阅读此。
这样做是可以的,但你为什么不创建一个getter/setter
相同的?使用它们而不是直接修改要好得多。
如果您不想在子类中修改值,请将它们设为final
.