... > Ruby > Переменные экземпляра и...

Переменные экземпляра и класса в Ruby

НАВИГАЦИЯ ПО СТРАНИЦЕ

Переменные Экземпляра Переменные Класса Различие

В Ruby переменные экземпляра и класса используются для хранения информации в объектах и классах соответственно. Они обеспечивают уровень инкапсуляции и позволяют хранить данные, связанные с конкретным объектом или с самим классом.

Переменные Экземпляра

Переменные экземпляра используются для хранения состояния объекта. Они начинаются с символа @ и могут быть доступны внутри всех методов объекта. Пример:

class Person
  def initialize(name, age)
    @name = name
    @age = age
  end

  def print_info
    puts "Имя: #{@name}, Возраст: #{@age}"
  end
end

person = Person.new("John", 25)
person.print_info  # Выводит: Имя: John, Возраст: 25

В этом примере @name и @age — это переменные экземпляра, которые принадлежат каждому экземпляру класса Person.

Переменные Класса

Переменные класса используются для хранения данных, связанных с самим классом, а не с его экземплярами. Они начинаются с символа @@. Пример:

class Dog
  @@total_dogs = 0

  def initialize(name)
    @name = name
    @@total_dogs += 1
  end

  def self.total_dogs
    @@total_dogs
  end
end

dog1 = Dog.new("Buddy")
dog2 = Dog.new("Max")

puts Dog.total_dogs  # Выводит: 2

В этом примере @@total_dogs — это переменная класса, которая отслеживает общее количество созданных экземпляров класса Dog.

Различие между Переменными Экземпляра и Переменными Класса

  1. Переменные Экземпляра:

    • Принадлежат конкретному экземпляру класса.

    • Разные экземпляры класса могут иметь разные значения для переменных экземпляра.

  2. Переменные Класса:

    • Принадлежат всему классу, а не его экземплярам.

    • Общие значения для всех экземпляров данного класса.

Использование переменных экземпляра и класса в Ruby обеспечивает механизм инкапсуляции данных в объектах и классах. Переменные экземпляра хранят состояние каждого объекта, а переменные класса позволяют хранить общие данные для всех экземпляров класса.