Stopping inheritance without using final

前端 未结 8 1573
攒了一身酷
攒了一身酷 2020-12-14 12:51

Is there any other method of stopping inheritance of a class apart from declaring it as final or by declaring its constructor as private?

8条回答
  •  情深已故
    2020-12-14 13:55

    Two more options:

    • make each method final, so people can't override them. You avoid accidental calling of methods from subclass this way. This doesn't stop subclassing though.

    • put check into constructor for class:

      if (this.getClass() != MyClass.class) {
          throw new RuntimeException("Subclasses not allowed");
      }
      

      Then nobody will be able to instantiate subclass of your class.

    (Not that I suggest using these techniques, it just came to my mind. I would use final class and/or private constructor)

提交回复
热议问题