In Chapter 8 you saw that classes consist of fields and methods. Fields hold the state of the object, and methods define the object’s behavior.
In this chapter, you’ll explore how methods work in more detail. You’ve already seen how to create methods, and in this chapter you’ll learn about method overloading, a technique that allows you to create more than one method with the same name. This enables your clients to invoke the method with different parameter types.
This chapter also introduces properties. Properties look to clients of your class like member variables, but properties are implemented as methods. This allows you to maintain good data-hiding, while providing your clients with convenient access to the state of your class.
Chapter 8 described the difference between value types (i.e., primitives such as int, long, etc.) and reference types (i.e., classes). This chapter explores the implications of passing value types to methods and shows how you can pass value types by reference, allowing the called method to act on the original object in the calling method.
Often you’ll want to have more than one method with the same name. The most common example of this is to have more than one constructor with the same name, which allows you to create the object with different parameters. For example, if you were creating a Time object, you might have circumstances where you want to create the Time object by passing in the date, hours, minutes, ...