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

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;
    }
}


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

10-01 12:32