I can then send MESSAGES to the METHODS within OBJECTS. If the METHOD is found it returns the answer. If it is not found it will travel to the PARENT CLASS, GRANDPARENT CLASS and so on to find the METHOD the MESSAGE was sent to. I think this is called 'Dynamic Binding'.
The process of finding a method in response to sending a message to an object is a type of binding. That binding can occur at two points in time: while the program is being compiled (compile-time), or while the program is running (run-time).
Dynamic binding is when the binding happens at run-time. Static binding is when the binding happens at compile-time. Objective-C is a dynamic binding language, it doesn't have static binding. Some languages are static binding languages, they don't have dynamic binding. Other languages are dual binding languages (C++ is the notorious example), where you'll have static binding in some contexts, and dynamic binding is other contexts.
What you're talking about is simply method inheritance. Method inheritance is implemented using dynamic binding in Objective-C. But static binding languages (or static binding contexts of dual binding languages) will work in the same way in this regard.
So what's the practical difference between dynamic method binding and static method binding?
Imagine a class called Shape. It has a method called draw, but it does nothing.
Image another class called Circle. Circle inherits from Shape, that is Circle's superclass is Shape. Circle also has a method called draw, which draws a circle. Circle's draw method OVERRIDES the draw method inherited from Shape.
Now consider the following psudeo-code (don't read any language's semantics into this):
Code:
Circle circle = // Alloc and init a Circle object here
Shape shape = circle;
[shape draw]; // What happens here? Nothing, or a circle?
So what happens? Is nothing drawn because shape's type is Shape and Shape's draw method does nothing? Or is a circle drawn because while shape's type is Shape, actually shape is a Circle and Circle's draw method draws a circle? The answer depends on the type of method binding.
With dynamic method binding, the runtime will find shape's actually class and start looking for a method there. So in dynamic binding, this code will draw a circle.
With static method binding, the compiler will see shape as being a Shape, will not know that it's actually a Circle object, and will look for a draw method starting with Shape. So in static binding, this code will draw nothing.
At first we only had static binding languages. Then we had dynamic binding languages, discovered this kind of POLYMORPHISM, and never looked back.