173. Closing the electrical panel before JDK 17
By its nature, an electrical panel is a closed unit of work. But our code from the previous problem is far from being a closed hierarchy. We can extend and implement almost any class/interface from inside or outside the hierarchy.
Using anything before JDK 17, closing a hierarchy of classes and interfaces can be done using several tools.
Applying the final modifier
For instance, we have the powerful final
modifier. Once we declare a class as final
, it cannot be extended, so it is completely closed to extension. Obviously, we cannot apply this technique consistently across a hierarchical model because it will lead to a non-hierarchical model.
If we scan our electrical panel model, then we can use the final
modifier in several places. First, we eliminate interfaces (ElectricComponent
and ElectricBreaker
) since interfaces cannot be declared as final
. Next, we can look at the ElectricCircuit
class and its subclasses (ParallelCircuit...