1) The document discusses code reuse through class hierarchies using inheritance. It explains different ways of organizing classes and grouping attributes and methods to facilitate code reuse.
2) Key inheritance concepts like parent/child classes, subclasses, polymorphism, and casting between classes are covered. When to use inheritance and best practices for defining attributes and behaviors in class hierarchies are also discussed.
3) Examples are provided to illustrate inheritance relationships between classes like Monster and subclasses like Dragon, and demonstrate polymorphism through method overriding.