Overriding private final methods in Java
<pre><code>class X1
{
    private final void show() { ... }
}

class X2 extends X1
{
    private final void show() { ... }
}
</code></pre>

<p><strong>Question 1</strong></p>

<p>The code is compiling without any errors. Since the <code>final</code> keyword prevents methods from being overidden, why does the code compile?</p>

<p><strong>Question 2</strong></p>

<p>If I remove the <code>private</code> keyword from both <code>show</code> methods, the code doesn't compile as expected. Why?</p>
