📜  红宝石 |方法覆盖

📅  最后修改于: 2022-05-13 01:54:48.497000             🧑  作者: Mango

红宝石 |方法覆盖

方法是执行某些特定任务并返回结果的语句的集合。覆盖意味着两个方法具有相同的名称但执行不同的任务。这意味着其中一种方法覆盖了另一种方法。如果超类中存在任何方法,而其子类中存在同名方法,则通过执行这些方法,将执行相应类的方法。

例子 :

# 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方法。