プライベート関数はオーバーライドできません。基本的に、サブタイプには存在しないようです。
また、サブクラスのオーバーライドにディスパッチするスーパークラスの意味でオーバーライドすることもできません。
具体的な例が役に立つかもしれません:
public class Test
{
public static void main(String[] args)
{
(new B()).privateGo();
(new B()).protectedGo();
(new C()).privateGo();
}
}
class A
{
public void privateGo()
{
_privateGo();
}
public void protectedGo()
{
_protectedGo();
}
private void _privateGo()
{
System.out.println("A._privateGo");
}
protected void _protectedGo()
{
System.out.println("A._protectedGo");
}
}
class B extends A
{
private void _privateGo()
{
System.out.println("B._privateGo");
}
protected void _protectedGo()
{
System.out.println("B._protectedGo");
}
}
class C extends A
{
public void privateGo()
{
_privateGo();
}
private void _privateGo()
{
System.out.println("C._privateGo");
}
}
出力は次のようになります。
A._privateGo
B._protectedGo
C._privateGo
保護されたメソッドは、サブクラスの実装にディスパッチされます。プライベート メソッドはそうではありません。この意味では、サブタイプにプライベート メソッドが存在しないようなものです。
GWT の修正済みバージョンに更新するか、ソースを編集する必要があります。C の privateGo が C の _privateGo にディスパッチする方法に注意してください。これはハックな回避策として使用できますが、問題は、スーパークラスがまだ C._privateGo (you'ソースを編集するか、新しいバージョンを取得する方がはるかに優れています)。