But in a client-server environment, the addition is not done locally, on the client machine, but remotely, on a server machine. The server machine contains the object that the message is sent to, and since it doesn't know anything about the first argument, you have to send both arguments. Of course, in any good object-oriented language, you don't. This new class inherits all the existing messages, and therefore, all the behavior of the original class. The original class is called the parent class, or superclass , of the new class.
Inheritance also promotes reuse .
You don't have to start from scratch when you write a new program. You can simply reuse an existing repertoire of classes that have behaviors similar to what you need in the new program. For example, after creating the class Dog, you might make a subclass called Wolf , which defines some wolf-specific messages, such as hunt . Or it might make more sense to define a common class called Canis , of which both Dog and Wolf are subclasses. Much of the art of o-o programming is determining the best way to divide a program into an economical set of classes.