0

我想在 ruby​​ 中利用子类的类方法,但是那些依赖子实例变量的方法不起作用。有人告诉我“不要使用类变量!(@@)”,所以我不是。我怎样才能让课堂B做我想做的事,即打印出来"1"

class A
  @a = "1"

  def initialize
    self.class.what_is_a
  end

  def self.what_is_a
    p @a
  end
end

class B < A
end


A.what_is_a
B.what_is_a
A.new
B.new

输出:

"1"
nil
"1"
nil

我希望他们都成为"1"

4

1 回答 1

0

使用受保护的方法

class A   
  def initialize
    self.class.what_is_a
  end

  def self.what_is_a
    puts a
  end

  protected 

  def self.a
    '1'
  end
end

class B < A
end


A.what_is_a # >> 1
B.what_is_a # >> 1
A.new # >> 1
B.new # >> 1
于 2017-04-28T12:33:29.180 回答