在Ruby中,多態(tài)性可以通過定義一個共同的接口來實(shí)現(xiàn)。接口是一個抽象的類,它定義了一組方法,這些方法可以被其他類實(shí)現(xiàn)或繼承。這樣,不同的類可以實(shí)現(xiàn)相同的接口,從而提供相同的方法調(diào)用,實(shí)現(xiàn)接口統(tǒng)一。
以下是一個簡單的示例,展示了如何使用Ruby實(shí)現(xiàn)接口統(tǒng)一:
Drawable
,包含一個draw
方法:class Drawable
def draw
raise NotImplementedError, "請?jiān)谧宇愔袑?shí)現(xiàn)此方法"
end
end
Drawable
接口的類Circle
和Rectangle
:class Circle < Drawable
def initialize(radius)
@radius = radius
end
def draw
puts "繪制一個半徑為 #{@radius} 的圓"
end
end
class Rectangle < Drawable
def initialize(width, height)
@width = width
@height = height
end
def draw
puts "繪制一個寬度為 #{@width},高度為 #{@height} 的矩形"
end
end
draw_shape
,接受一個Drawable
對象作為參數(shù),并調(diào)用其draw
方法:def draw_shape(shape)
shape.draw
end
現(xiàn)在,你可以使用draw_shape
函數(shù)來繪制不同的形狀,而不需要關(guān)心它們的具體實(shí)現(xiàn):
circle = Circle.new(5)
rectangle = Rectangle.new(4, 6)
draw_shape(circle) # 輸出:繪制一個半徑為 5 的圓
draw_shape(rectangle) # 輸出:繪制一個寬度為 4,高度為 6 的矩形
通過這種方式,Ruby中的多態(tài)性實(shí)現(xiàn)了接口統(tǒng)一,使得不同的類可以使用相同的接口進(jìn)行操作。