美文网首页
ruby的继承

ruby的继承

作者: 风___________ | 来源:发表于2018-02-12 13:41 被阅读11次
    1.ruby同JAVA一样只支持单继承,每个类只能有一个父类
    class Point
      def initialize(x, y)
      end
    end
    class Point3D < Point
      # 子类可以重写父类的方法
      def initialize(x,y,z)
        super(x,y)
      end
    end
    
    
    2. 为了提高程序的灵活性ruby引入了 模块 为实现多重继承提供了可能。模块可以说是类的一个补充,但是模块于类有两个不同:
    • 模块不能拥有实例
    • 模块不能被继承 --- ## 如何创建模块 ### 关键字:module
    • 模块名必须是大写字母开头
    module HelloModule
        # 定义常量
          Version = 'v1.0'
        # 定义方法
          def say_hello(name)
            puts "hello,#{name}"
          end
    
          # 指定say_hello 方法为模块函数
          module_function :say_hello
        end
    

    注释: module_function: 的作用是把方法作为模块函数公开给外部使用,module_function后面跟的参数是方法名。

    3. 解决ruby单继承

    module Mod
      def meth
        puts "这是module"
      end
    end
    # 使用关键字 include 使类包含模块 代码:
    class ModuleDemo01
      include Mod
    end
    
    mod = ModuleDemo01.new
    mod.meth
    

    注释:

    1. 同继承关系一样,类自身已经定义了同名方法时,优先使用类自身的方法
    2. 一个类中包含多个模块,优先使用最后一个包含的模块

    相关文章

      网友评论

          本文标题:ruby的继承

          本文链接:https://www.haomeiwen.com/subject/embrtftx.html