在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中的多态性实现了接口统一,使得不同的类可以使用相同的接口进行操作。