When you call one method from another in the same object, you do not need to write
self.method_name
You can just write
method_name
The exception is if the method name ends with an equal sign. Calling
self.method
calls the instance’s method. Using the form
def self.method end
defines a class method. To call those, you must use
self.class.some_method
to call it from another method.
Global variables start with a dollar sign like this:
$abundance
Class variables start with two at signs:
@@counter
The class variable is actually for the class hierarchy, not just the class. So if you have a variable
@@area
in the Shape class and Circle inherits from it, then they will share that variable. For a subclass to have its own class variable, reference it with the word “self”:
self.class.total_count
The book also talked about public, private and protected methods. You can just list the methods you want to be private with the “private” keyword:
private :do_something :stop_talking :stay_secret
And you can call them as regular methods in the object.
The book also had a section on protected methods, but honestly I did not read it too carefully. Protected methods started in C++. I have read that the designer of C++, Bjarne Stroustrup, regards them as a mistake, and that if he could start C++ over again he would not put in protected methods. Good enough for me.