ruby - 在 Ruby 中继承可以进行类型转换吗?

标签 ruby oop

我正在使用 Ruby,并使用继承编写类。

例如:

class Canine
  def initialize
  end

  def make_noise
    puts "whoosh whoosh"
  end
end

class Dog < Canine
  def initialize
  end

  def make_noise
    puts "wong wong"
    super
  end
end

现在我有一个狗对象:

jack = Dog.new

是否可以通过dog对象调用Canine的make_noise()方法?

在其他语言中,这将是一个类型转换,类似于:

(Canine)jack.make_noise

请注意,这不是 Ruby 语法,因此是我的问题。

在 Ruby 中可以这样做吗?如果是这样,怎么做到的?

最佳答案

你可以这样做:

Canine.instance_method(:make_noise).bind(jack).call

一个更好的计划是只给父类(super class)中的方法一个别名,或者重命名它。

关于ruby - 在 Ruby 中继承可以进行类型转换吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16239833/

相关文章:

ruby-on-rails - 为 Ruby on Rails 设计 gem 安装

javascript - 为什么 JavaScript 中的子对象会失去全局作用域?

php - 在类中包装 Shell 命令的模式

c# - 我应该多积极地进行子类化以保持 DRY?

ruby-on-rails - 用于发布和订阅事件的 Ruby 中 Redis SUB/PUB 的替代方案

javascript - 如何在不渲染页面的情况下点击链接?

ruby - 为什么类对象可以访问内核模块中的实例模块?

ruby-on-rails - 运行 Rake 测试时出现 404 错误

python - 创建类的静态属性(属性是同一类的实例)

javascript - CoffeeScript:对象初始化器中的 Getter/Setter