Java 私有字段并重写getter和setter方法
我有一个这样的抽象类:Java 私有字段并重写getter和setter方法,java,Java,我有一个这样的抽象类: public abstract class Block { private boolean collided = false; public boolean hasCollided() { return collided; } public void markCollided() { collided = true; } } 我有4个子类的块类。这些类还需要接收冲突变量。这意味着这两个方法应该被
public abstract class Block {
private boolean collided = false;
public boolean hasCollided() {
return collided;
}
public void markCollided() {
collided = true;
}
}
我有4个子类的块类。这些类还需要接收冲突变量。这意味着这两个方法应该被Block的4个子类覆盖。我怎样才能让它工作
如果我试图重写它,它将显示错误,因为子类中不包含这样的变量
如何在所有子类中接收冲突变量
此外,我还创建了一个块类数组,该数组包含4个子类对象。在遍历数组时,是否可以为每个对象的冲突变量设置不同的值?
简而言之,collided变量对于数组中的每个对象都是唯一的?您需要使用公共方法hasCollided、markCollided等,因为collided是类块的私有变量
事实上,4个子类扩展了块,这并不意味着可以访问私有字段。块提供的public HasCollide,MarkCollide访问其私有变量。您不能直接访问冲突变量,因为它是私有的。但是 可以使用超类的HasCollide方法返回父类的Collide变量
public class subBlock {
public boolean hasCollided() {
return super.hasCollided();
}
public void markCollided() {
super.hasCollided()= true;
}
}
不要让它受到保护private@ScaryWombat为什么?这些方法是公共的和继承的。如何在所有子类中接收冲突的变量?呼叫HasCollidemethod@ManasaScaryWombat的意图是-您不应该尝试从子类访问属性,而是使用方法检查状态-子类不应该关心propertyCollided变量对于4个元素不能是唯一的。它只能有2个值。对或错。你说的独特是指独立?是的,实例变量就是这样工作的。