First thing comes in mind when somebody say Non-extendable class , that is final class. Marking a class as “final” , no one can extends the particular class. But there is another tricky way to restricting any other class from extending your class. Thinking how ….? Simple, marking all available constructors of a class as private. As per constructor chaining principle in class hierarchy , every child class constructor should delegate call to super class explicitly or implicitly. In implicit case, call get delegate to class’s default constructor. If all available constructors of the class are private then no other class can not extend it. 1: public class MyClass { 2: 3: private MyClass(){ 4: System.out.println(" Inside Singleton Constructor "); 5: } 6: 7: } 8: 9: class MyChildClass extends MyClass{ // compilation error 10: 11: }