溫馨提示×

Ruby多態(tài)性怎樣區(qū)分實例變量

小樊
81
2024-11-06 07:50:42
欄目: 編程語言

在Ruby中,多態(tài)性允許我們使用一個接口來表示不同類型的對象。要實現(xiàn)多態(tài)性,我們需要使用方法重寫(method overriding)和模塊(modules)。

要區(qū)分實例變量,我們可以使用instance_variable_getinstance_variable_set方法。這兩個方法允許我們在運行時訪問和修改實例變量,而不需要知道對象的具體類型。這里有一個簡單的例子來說明如何使用這些方法區(qū)分實例變量:

class Animal
  def initialize(name)
    @name = name
  end
end

class Dog < Animal
  def initialize(name, breed)
    super(name)
    @breed = breed
  end
end

class Cat < Animal
  def initialize(name, color)
    super(name)
    @color = color
  end
end

def print_animal_info(animal)
  puts "Name: #{animal.instance_variable_get(:@name)}"
  puts "Breed: #{animal.instance_variable_get(:@breed)}" if animal.is_a?(Dog)
  puts "Color: #{animal.instance_variable_get(:@color)}" if animal.is_a?(Cat)
end

dog = Dog.new("Buddy", "Golden Retriever")
cat = Cat.new("Whiskers", "Black")

print_animal_info(dog)
print_animal_info(cat)

在這個例子中,我們定義了一個Animal基類,以及兩個子類DogCat。每個子類都有自己的實例變量(@breed@color)。

print_animal_info方法接受一個Animal類型的參數(shù)。我們可以使用instance_variable_get方法來訪問實例變量,而不需要知道對象的具體類型。我們還使用了is_a?方法來檢查對象是否是DogCat類型的實例,以便在訪問特定于子類的實例變量時進行條件判斷。

0