Instance variable: self vs @
Here is some code: class Person def initialize(age) @age = age end def age @age end def age_difference_with(other_person) (self.age - other_person.age).abs end protected :age end What I want to know is the difference between using @age and self.age in age_difference_with method. Writing @age directly accesses the instance variable @age . Writing self.age tells the object to send itself the message age , which will usually return the instance variable @age — but could do any number of other things depending on how the age method is implemented in a given subclass. For example, you might have a