溫馨提示×

Ruby多態(tài)性怎樣處理方法覆蓋

小樊
81
2024-11-06 07:44:41
欄目: 編程語言

在Ruby中,多態(tài)性是指不同對象可以對同一方法作出不同的響應(yīng)。要實(shí)現(xiàn)多態(tài)性,你可以使用方法覆蓋(method overriding)和模塊(modules)。這里主要介紹方法覆蓋。

方法覆蓋是指子類定義一個(gè)與父類相同名稱的方法,當(dāng)子類對象調(diào)用該方法時(shí),將執(zhí)行子類中的實(shí)現(xiàn),而不是父類中的實(shí)現(xiàn)。這樣,不同類的對象可以通過相同的接口調(diào)用不同的實(shí)現(xiàn)。

以下是一個(gè)簡單的示例:

class Animal
  def speak
    puts "The animal makes a sound"
  end
end

class Dog < Animal
  def speak
    puts "The dog barks"
  end
end

class Cat < Animal
  def speak
    puts "The cat meows"
  end
end

animals = [Dog.new, Cat.new]

animals.each do |animal|
  animal.speak
end

輸出結(jié)果:

The dog barks
The cat meows

在這個(gè)例子中,DogCat 類都覆蓋了 Animal 類的 speak 方法。當(dāng)我們遍歷 animals 數(shù)組并調(diào)用每個(gè)元素的 speak 方法時(shí),會(huì)根據(jù)對象的實(shí)際類型執(zhí)行相應(yīng)的方法實(shí)現(xiàn)。這就是多態(tài)性的體現(xiàn)。

0