Here's an approach that lets you return a parameter type for this:
AbstractFoo> {
/** Subclasses must implement to return {@code this}. */
protected abstract T getThis();
/** Does something interesting and returns this Foo */
public T inheritedThing {
/* blah di blah */
return getThis();
}
}