Javaではfinal宣言されたメソッドはオーバーライドできません。
コンパイルエラーとなります。
[NG例][Java]
public class Sample1 {
public final void Test() {
}
}

public class Sample2 extends Sample1{
// final宣言されているためオーバーライドできない。
public void Test() {
}
}

オーバーライドのJavaとC#の違いについて補足します。
C#はデフォルト(修飾子がついていない)のメソッドはオーバーライドできない仕様になっています。
Javaはデフォルトのメソッドはオーバーライドできます。
オーバーライドに関するデフォルトの仕様が違うことがお分かりいただけると思います。

整理しますと、
Javaでは「デフォルトではオーバーライドできるが、final宣言してオーバーライドできないようにする」という考え方ですが、C#では「デフォルトではオーバーライドできないが、virtual宣言してオーバーライドできるようにする」という考え方です。

にほんブログ村 IT技術ブログへ
にほんブログ村