最终方法在java中的确切方式

vid*_*dya 5 java final

class Clidder {
    private final void flipper() {
        System.out.println("Clidder");
    }
}
public class Clidlet extends Clidder {
    public final void flipper() {
        System.out.println("Clidlet");
    }
    public static void main(String args[]) {
        new Clidlet().flipper();
    }
}
Run Code Online (Sandbox Code Playgroud)

结果是什么?对于这个问题,我期待答案"编译失败",因为最终方法不能被覆盖,并且它不允许继承.但答案是"Cliddet"为什么会这样?我是否误解了这个概念中的某些内容.这怎么可能是输出?请解释.

小智 4

private修饰符表示子类Clidlet中看不到Clidder类中的flipper()方法。所以它并不是重写,而只是看起来像子类中的新方法声明。私有方法/字段无法被覆盖,因为它不可见。