Ruby 继承

Ruby 继承

Ruby是理想的面向对象的语言。在一个面向对象的编程语言中,继承是最重要的特征之一。继承允许程序员将一个类的特性继承到另一个类。Ruby只支持单类继承 ,它不支持多类继承,但它支持mixins。mixins_ 是为了在Ruby中实现多重继承,但它只继承接口部分。

继承提供了 “可重用性 “的概念,也就是说,如果一个程序员想创建一个新的类,而有一个类已经包括了程序员想要的一些代码,那么他或她可以从现有的类中派生出一个新的类。通过这样做,可以增加对现有类的字段和方法的重用,而不会产生额外的代码。

Ruby  继承

在上图中,A类是超类,B类是子类,或者你可以说B类是从A类派生出来的(Base Class)。

继承中的关键术语

  • 超类: 其特征被继承的类被称为超类或基类或父类。
  • 子类: 从另一个类派生出来的类被称为子类或派生类或子类。你也可以在基类方法和对象之外添加它自己的对象、方法等等。

注意: 默认情况下,Ruby中的每个类都有一个父类。在 Ruby 1.9 之前,Object类是所有其他类的父类,或者你可以说它是类层次结构的根。但是从Ruby 1.9 版本开始, BasicObject类 是Ruby中所有其他类的超级类(父类)。Object类是BasicObject类的一个子类。

语法

subclass_name < superclass_name

例子

# Ruby program to demonstrate
# the Inheritance
 
#!/usr/bin/ruby
 
# Super class or parent class
class GeeksforGeeks
 
    # constructor of super class
    def initialize
         
        puts "This is Superclass"
    end
     
    # method of the superclass
    def super_method
         
        puts "Method of superclass"
    end
end
 
# subclass or derived class
class Sudo_Placement < GeeksforGeeks
 
    # constructor of deriver class
    def initialize
 
       puts "This is Subclass"
    end
end
 
# creating object of superclass
GeeksforGeeks.new
 
# creating object of subclass
sub_obj = Sudo_Placement.new
 
# calling the method of super
# class using sub class object
sub_obj.super_method

输出

This is Superclass
This is Subclass
Method of superclass

重写父类或超类方法: 方法重写是Ruby的一个非常有效的功能。在方法覆盖中,子类和超类包含相同的方法名称,但执行不同的任务,或者我们可以说一个方法覆盖另一个方法。如果超类包含一个方法,而子类也包含相同的方法名,那么子类的方法将被执行。

例子

# Ruby program to demonstrate
# Overriding of Parent or
# Superclass method
 
#!/usr/bin/ruby
 
# parent class
class Geeks
     
    # method of the superclass 
    def super_method
         
        puts "This is Superclass Method"
  end
     
end
 
# derived class 'Ruby' 
class Ruby < Geeks
     
    # overriding the method of the superclass 
    def super_method
         
        puts "Override by Subclass"
  end
end
    
# creating object of sub class
obj = Ruby.new
 
# calling the method
obj.super_method 

输出

Override by Subclass

继承中super方法的使用: 该方法用于在子类中调用父类方法。如果该方法不包含任何参数,它会自动传递其所有参数。一个超级方法是由 super 关键字定义的。每当你想调用父类的同名方法时,你可以简单地写上 supersuper()。

例子

# Ruby Program to demonstrate the
# use of super method
 
#!/usr/bin/ruby
 
# base class
class Geeks_1
    
    # method of superclass accepting
    # two parameter
    def display a = 0, b = 0
        puts "Parent class, 1st Argument: #{a}, 2nd Argument: #{b}"
    end
end
 
# derived class Geeks_2
class Geeks_2 < Geeks_1
 
    # subclass method having the same name
    # as superclass
    def display a, b
         
        # calling the superclass method
        # by default it will pass
        # both the arguments
        super
         
        # passing only one argument
        super a
         
        # passing both the argument
        super a, b
         
        # calling the superclass method
        # by default it will not pass
        # both the arguments
        super()
         
        puts "Hey! This is subclass method"
    end
end
 
# creating object of derived class
obj = Geeks_2.new
 
# calling the method of subclass
obj.display "Sudo_Placement", "GFG"

输出

Parent class, 1st Argument: Sudo_Placement, 2nd Argument: GFG
Parent class, 1st Argument: Sudo_Placement, 2nd Argument: 0
Parent class, 1st Argument: Sudo_Placement, 2nd Argument: GFG
Parent class, 1st Argument: 0, 2nd Argument: 0
Hey! This is subclass method

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程