Private functions cannot be overriden. It's basically like they don't exist to subtypes.
They also cannot be overriden in the sense of a super class dispatching to a subclasses override.
A concrete example might prove useful:
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");
}
}
The output will be:
A._privateGo
B._protectedGo
C._privateGo
Protected methods will be dispatched to subclass implementations. Private methods will not. In this sense, it's like private methods do not exist to sub types.
You will have to either update to a fixed version of GWT or edit the source. Note how C's privateGo will dispatch to C's _privateGo. This could be used as a hacky work around, but the problem would be that you'd have to make sure you always had an instance of the subclass and never the superclass as the superclass still wouldn't dispatch to C._privateGo (you're much, much better off editing the source or grabbing a new version).