2009-11-17 61 views
0
class A 
    #define class level attribute called key 
    class << self 
    attr_accessor :key 
    end 
end 

class B < A 
end 

B.key = "foo" 
B.key # returns "foo" 
A.key # returns nil 

繼承期間的類方法行爲

如果我希望A.key在上述場景中返回「foo」,那麼這種方法是什麼?

回答

1

我知道的唯一方法是手動聲明類的功能。子類將返回父類的值,但不能讓它們返回不同的值。

class A 
    def self.key 
    @@key 
    end 

    def self.key=(new_val) 
    @@key = new_val 
    end 
end 
0

類方法不能是虛擬的。這就是生活。當你有一堂課時,你沒有虛擬桌子。