美文网首页
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