وراثت در روبی
ارثبری کلاسها، 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 |
| super | super یا super(args) |
| کلاس والد | Child.superclass |
این مبحث بخشی از دوره آموزش کامل روبی است.