Hooray—you did it! You've made it through all of the major object technology concepts that you'll need to know for the rest of the book, learning a great deal of C# syntax in the process.
Please make sure that you're comfortable with these concepts before proceeding to Part Two, as they will form the foundation of the rest of your object learning experience:
These same concepts will be reinforced when you learn how to model a problem in Part Two.
They will be reinforced yet again when you learn how to render a model as C# code in Part Three.
In this chapter, you've learned that
Different objects can respond to the same exact message in different class-specific ways, thanks to an OO language feature known as polymorphism.
Abstract classes are useful if we want to prescribe common behaviors among a group of (derived) classes without having to go into details about those behaviors. We specify the "what" that an object must do (the messages that an object must be able to respond to, also known as method signatures) without specifying the "how" (the method bodies) in the base class.
Interfaces are an even more abstract way to prescribe behaviors; by implementing multiple interfaces, a class of objects make take on multiple roles in an application.
Static attributes/properties may be used to enable an entire class of objects to share data, and static methods enable us to provide services that are available to the application through a class as a whole.
How we may take advantage of static features along with constant attributes to create custom utility classes.
Reflecting back on our home construction example from the Introduction to this book, you now know all about the unique properties of "blue stars" (objects), and why they are superior construction materials. But, you still need to learn how to lay out a blueprint for how to use them effectively in building an application—we'll teach you how to do so in Part Two!