must not be private. You cannot have a top-level class as private. A top-level class can be public, abstract or final.
Second one. Return-type is not part of method signature.
Third one. The method test() in class Super can be overloaded in class Sub. When doing so, the accessibility of the overloading method(test() of Sub) cannot be more restricted than the overloaded method(test() of Super).