在Ruby中,多态性可以通过定义一个共同的接口来实现。接口是一个抽象的类,它定义了一组方法,这些方法可以被其他类实现或继承。这样,不同的类可以实现相同的接口,从而提供相同的方法调用,实现接口统一。
以下是一个简单的示例,展示了如何使用Ruby实现接口统一:
Drawable
,包含一个draw
方法:class Drawable
def draw
raise NotImplementedError, "请在子类中实现此方法"
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
对象作为参数,并调用其draw
方法:def draw_shape(shape)
shape.draw
end
现在,你可以使用draw_shape
函数来绘制不同的形状,而不需要关心它们的具体实现:
circle = Circle.new(5)
rectangle = Rectangle.new(4, 6)
draw_shape(circle) # 输出:绘制一个半径为 5 的圆
draw_shape(rectangle) # 输出:绘制一个宽度为 4,高度为 6 的矩形
通过这种方式,Ruby中的多态性实现了接口统一,使得不同的类可以使用相同的接口进行操作。