Ruby ทำได้แค่ single inheritance ทุก class จะมีแม่เพียง class เดียว ถ้าไม่มีการระบุทุก class จะเป็นลูกของ class Object
วิธีการกำหนด superclass
class InterestBearingAccount < BankAccount
def initialize(owner, rate)
@owner = owner
@balance = 0
@rate = rate
end
def deposit_interest
@balance += @rate * @balance
end
end
InterestBearingAccount เป็น class ลูกของ BankAccount ดังนั้นจึงได้คุณสมบัติ (method) ทั้งหมดของ BankAccount มาใช้
ถ้าเราต้องการยกเรื่องการกำหนด @balance และ @owner ให้กับ class แม่ เราสามารถกำหนดได้ดังนี้
def initialize(owner, rate)
super(owner)
@rate = rate
end
คำสั่ง super จะ ค้นหา method ที่มีชื่อเหมือนกันใน class แม่ แล้วเรียก method นั้น ในตัวอย่างคำสั่ง super(owner) จะค้นหา method ที่ชื่อ initialize ใน class แม่ พร้อมเรียกและส่งตัวแปร owner ไปให้ ในกรณีที่ไม่เจอ ruby จะดูต่อไปที่ class แม่ของแม่ต่อๆ ไป ถ้าไม่เจอจึงแสดง error ออกมา
สิ่งนี้ต่างจากภาษาอื่นๆ เราต้องระวังไว้ว่า class ลูกจะไม่เคยเรียก initialize ของ class แม่เอง ถ้าเราไม่เรียกให้