SOLID
S -Single Responsibility Principle
O-Open/Close principle
L - Liscov substitution principle
I - Interface Segmented Principle Interface Employee{ developCode(); testCode(); PerformanceTuning(); ContinuousIntegration(); } // Irrevant for Developer to implement all the methd except developCode.
Favour Composition over Inheritance in Java - In Java multiple inheritance is not possible so inheritance is not that much favourable than composition - Flexible to replace in Composition - In Inhertitance when super class is changed, the sub class becomes fragile
Difference between method overriding & method hiding
Coupling VS Cohesion
Good software design has high cohesion and low coupling.
High cohesion is when you have a class that does a well defined job. Low cohesion is when a class does a lot of jobs that don't have much in common.