In the moment of birth
Let’s start over, and define a new class.
Remember how we said that objects can be thought of as two things: They know stuff, and they can do things.
Let’s define a class
Person. People obviously also know things, and can do things.
Here’s how to define a shiny, new, empty class
class Person end
Again, that’s not a very useful class, but we can instantiate it, and create an actual, concrete person instance (object) from it:
Now, before we add any behaviour (methods) to our class, we want to be able to give it some initial data: In our case, we want the person to know its own name.
We can do this like so:
class Person def initialize(name) end end
You see that we add a method called
initialize to the class, and this method
accepts a single argument, which is called
name. At the moment, this method
is still empty. We’ll add some code to it in a bit.
The important bit to learn for you is: the method
initialize is a special
method with a special meaning in Ruby:
Whenever you call the method
new on a class, as in
Person.new, the class
will create a new instance of itself. It will then, internally, call the method
initialize on the new object. Doing so it will simply pass all the
arguments that you passed to
new on to the method
So we can now create a new person instance by calling …
… and the string
"Ada" will be passed on to our
initialize method, and
end up being assigned to the local variable
The special method
initialize is called under the hood when the
object has been created by the class method
initialize method does not do anything with the String
passed, yet. That’s right. We’ll get to that in the next chapter.
To recap, when you call
new on the class
Person, and pass the string
"Ada" then the method
new will create a new instance of the class, and call
initialize on it, passing the same argument list, which in our case is the
When we create a new instance of a class by the way of calling the method
on that class, we also say that we “instantiate” that object: By calling
Person.new we instantiate a new person object.