ruby - 如何让子类变量回到ruby中的父类

标签 ruby class inheritance

我想创建一个基类来处理所有方法。在这种情况下,我如何使用 ruby​​ 实现这一点?

class Dog
  def initialize
    @breed = "good breed"
  end

  def show_dog
    puts "#{self.class.first_name} of breed #{@breed}"
  end
end

class Lab < Dog

  attr_reader :first_name
  def initialize
    @first_name = "good dog"
  end
end

lb = Lab.new()
lb.show_dog

预期结果将是“good dog of breed good breed” 提前谢谢你:)

最佳答案

  1. self.class.first_name 没有做您可能想做的事情。你需要直接使用@first_name

  2. 子类需要调用父类的构造函数;它不会自动调用。

这个有效:

class Dog
  def initialize
    @breed = "good breed"
  end

  def show_dog
    puts "#{@first_name} of breed #{@breed}" ### <- Changed
  end
end

class Lab < Dog

  attr_reader :first_name
  def initialize
    super ### <- Added
    @first_name = "good dog"
  end
end

lb = Lab.new()
lb.show_dog

关于ruby - 如何让子类变量回到ruby中的父类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15678995/

相关文章:

c++派生带有嵌套结构的纯抽象

ruby - 没有 mcrypt 的 rijndael_128 ruby

mysql - rails : Display Maintenance Page if No Database Connection Available

ruby-on-rails - 获取 : "Couldn' t find SessionsHelper, 期望它在 helpers/sessions_helper.rb 中定义”

java - 尝试获取具有通用参数的类

inheritance - TypeScript:应该推断继承方法中的参数类型

html - 如何允许用户在 Rails 中提交自定义电子邮件模板?

java - 获取声明的方法 - Java

java - 类数组中的空指针异常

java - 在 Java 中从父类调用子类构造函数