红宝石 |方法覆盖
方法是执行某些特定任务并返回结果的语句的集合。覆盖意味着两个方法具有相同的名称但执行不同的任务。这意味着其中一种方法覆盖了另一种方法。如果超类中存在任何方法,而其子类中存在同名方法,则通过执行这些方法,将执行相应类的方法。
例子 :
# Ruby program of method overriding
# define a class
class A
def a
puts 'Geeks'
end
end
# define a subclass
class B < A
# change existing a method as follows
def a
puts 'Welcome to GeeksForGeeks'
end
end
b = B.new
b.a
输出 :
Welcome to GeeksForGeeks
在上面的示例中,从A类中定义的a方法对A的对象执行a打印Geeks ,而从B类中定义的a方法对B的对象执行a打印Welcome to GeeksForGeeks 。它非常有用,因为它可以防止我们创建具有不同名称的方法并记住所有这些。 B 类中的方法 a 覆盖 A 类中的方法 a。
例子 :
# Ruby program of method overriding
# define a class
class Box
# constructor method
def initialize(width, height)
@w, @h = width, height
end
# instance method
def getArea
@w * @h
end
end
# define a subclass
class BigBox < Box
# change existing getArea method as follows
def getArea
@area = @w * @h
puts "Big box area is : #@area"
end
end
# create an object
box = BigBox.new(15, 20)
# print the area using overriden method.
box.getArea()
输出:
Big box area is : 300
在上面的例子中, BigBox类中的getArea方法覆盖了Box类中的getArea方法。