The runtime type of an object can be that type or any subclass of the declared type. All method calls are resolved starting with the class that created the object. If the method isn’t found in the class that created the object, then it will look to the parent class until it finds the method. The method must exist, or the code won’t compile