Что такое класс в Ruby?

Класс как объект и описание поведения экземпляров: initialize, состояние, методы и наследование.

Короткий ответ

Что ответить на собеседовании

Класс описывает поведение экземпляров и обычно используется для создания объектов через new. Состояние экземпляра хранится в переменных с @, а методы предоставляют операции над ним. Сам класс тоже является объектом класса Class. Ruby поддерживает одиночное наследование классов и подключение поведения модулей.

Подробный разбор

Ответ с пояснениями

Класс объединяет поведение объектов некоторого типа. Его удобно представить как описание того, какие операции доступны экземплярам и как они инициализируются. При этом Ruby не требует заранее объявлять все переменные экземпляра как фиксированные поля структуры.

class Dog
  attr_reader :name

  def initialize(name)
    @name = name
  end

  def bark
    "#{@name} says Woof!"
  end
end

first = Dog.new("Rex")
second = Dog.new("Luna")
puts first.bark   # Rex says Woof!
puts second.name # Luna

@name принадлежит конкретному экземпляру. initialize задаёт начальное состояние, а attr_reader создаёт метод чтения. Извне вызывают dog.name, а не получают прямой доступ к @name как к публичному полю.

Сам Dog — объект: Dog.class возвращает Class. У него также могут быть собственные методы, например def self.description; их вызывают на классе, а не на экземпляре.

Наследование записывается как class ServiceDog < Dog. У класса один непосредственный суперкласс; общую функциональность несвязанных классов можно подключать модулями. Класс, объект класса и экземпляр этого класса — разные уровни, которые полезно различать на собеседовании. Документация Class.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку