Class Variables

Learn about class variables.

We'll cover the following

Class variables

A class variable’s name starts with a @@ sign. It must be initialized before use. Its scope is limited to the class in which it’s created. In other words, it belongs to the whole class and can be accessed from anywhere in the class.

For example:

Press + to interact
class Employee
@@no_of_employees = 0
def initialize(name)
@employee_name = name
@@no_of_employees += 1
end
def total_no_of_employees()
puts "Total number of employees: #@@no_of_employees"
end
end
# Create Objects
e1 = Employee.new("Emma")
e2 = Employee.new("David")
e3 = Employee.new("Harris")
# Call Methods
e1.total_no_of_employees()
e2.total_no_of_employees()
e3.total_no_of_employees()

Explanation

  • The @@no_of_employees class variable tracks the count of the number of existing instances of the Employee class.

  • Whenever a new Employee instance is instantiated by a call to Employee.new, the name of that employee is stored in the @employee_name instance variable, and the total count is increased by adding 1 to the @@no_of_employees class variable in line 5.

  • Three new instances of the Employee class are created in lines 14–16. This is why each instance has a different value assigned to the @employee_name instance variable. Notice, though, how all three employees know (on lines 19–21) that there are three employees.