Can a class that is not declared public be subclassed? As Anthony said, yes. If so are there any restrictions to this? Wilfried already pointed out one restriction. Another important one to be aware of concerns the availability (the scope) of the class. If the class is in some package, and the class is declared to be public, then anybody with access to that package can subclass the class. If the class is given default (package) scope, then only classes that are of the same package have access to the class in order to subclass it. For example, this classcan be subclassed by any class that has access to the package dirk. This classwill compile and run just fine (assuming that the compiler is told where to find the package dirk). If the super class were declared with package level access only:the compiler would complain when trying to compile SubClass because dirk.SuperClass is not public in dirk; cannot be accessed from outside package. If the subclass were defined to belong to the dirk packagethen everybody would be happily compiled and executed again (if one can be happy when executed).