使属性可读/可写,但不可重写/可重新声明



是否可以防止子类覆盖/重新声明类属性,但仍允许它们读取和写入它?

class Human
{
    public boolean isMale;
    ...
}
class Asian extends Human
{
    public void livingLife()
    {
         // this is OK
         (isMale) ? doSomething() : doSomethingElse();
         // this is OK
         isMale = false;
    }
    // redeclaration is not OK
    public boolean isMale;
}

将其设为私有并提供访问器。

class Human
{
    private boolean isMale;
    public boolean isMale() {
        return isMale;
    }
    public void setIsMale(boolean isMale) {
        this.isMale = isMale;
    }
}

请注意,您无法避免重新声明。

最新更新