Rules: inheritance that can maximize reuse of your rules while allowing localized overriding as appropriate. Also called polymorphism, inheritance allows a rule created for one class (possibly an abstract class) to be applied to other classes that inherit from it.
Class inheritance searches for rules from a concrete, lower class, up the class hierarchy to find available rules.
Two types of class inheritance — directed inheritance and pattern inheritances