وراثت در روبی

ارث‌بری کلاس‌ها، override کردن متدها و استفاده از super در روبی

وراثت چیست؟

وراثت (Inheritance) یعنی یک کلاس ویژگی‌ها و متدهای کلاس دیگر را به ارث ببرد. با نماد < انجام می‌شود.

تعریف وراثت

# کلاس پایه (Parent)
class Animal
  def initialize(name)
    @name = name
  end

  def speak
    "صدای عمومی حیوان"
  end

  def eat
    "#{@name} در حال غذا خوردن است"
  end
end

# کلاس فرزند (Child)
class Dog < Animal
  def speak
    "#{@name} می‌گوید: واق واق!"
  end
end

class Cat < Animal
  def speak
    "#{@name} می‌گوید: میو!"
  end
end

استفاده

dog = Dog.new("رکس")
cat = Cat.new("پشمک")

puts dog.speak  # => رکس می‌گوید: واق واق!
puts cat.speak  # => پشمک می‌گوید: میو!
puts dog.eat    # => رکس در حال غذا خوردن است (از Animal)

super — فراخوانی متد والد

class Animal
  def initialize(name)
    @name = name
    puts "Animal ساخته شد"
  end
end

class Dog < Animal
  def initialize(name, breed)
    super(name)  # فراخوانی initialize والد
    @breed = breed
    puts "Dog ساخته شد"
  end
end

dog = Dog.new("رکس", "ژرمن")

Override کردن

کلاس فرزند می‌تواند متد والد را بازنویسی کند:

class Bird
  def fly
    "پرنده پرواز می‌کند"
  end
end

class Penguin < Bird
  def fly
    "پنگوئن نمی‌تواند پرواز کند!"
  end
end

puts Bird.new.fly     # => پرنده پرواز می‌کند
puts Penguin.new.fly  # => پنگوئن نمی‌تواند پرواز کند!

بررسی سلسله‌مراتب

puts Dog.superclass     # => Animal
puts Animal.superclass # => Object
puts Object.superclass # => BasicObject

خلاصه

مفهومسینتکس
وراثتclass Child < Parent
supersuper یا super(args)
کلاس والدChild.superclass

این مبحث بخشی از دوره آموزش کامل روبی است.

ابزارهای مرتبط