1

スーパークラスに加えて、サブクラスに属性を追加するサブクラスを作成したいと考えています。これは私が試したことです:

バージョン I:

class Person
    attr_reader :first_name, :last_name, :age
    def initialize (first_name, last_name, age) 
        @first_name = first_name  
        @last_name = last_name
        @age = age
    end
end

class Musician < Person
    attr_reader :first_name, :last_name, :age, :instrument
    def initialize (first_name, last_name, age, instrument)
        super 
        @instrument
    end
end

バージョンⅡ

class Person
    ATTRS = ['first_name', 'last_name', 'age']
    def attributes
        ATTRS
    end
end

class Musician < Person
    ATTRS = ['instrument']
    def attributes
        super + ATTRS
    end
end

これらはどちらも機能しません。

4

1 に答える 1

2

バージョン 1 で試す

class Musician < Person
  attr_reader :instrument
  def initialize(first_name, last_name, age, instrument)
     # Pass arguments to the super class' constructor!
     super first_name, last_name, age
     @instrument = instrument
  end
end

attr_reader :first_name, :last_name, :agein のおかげPerson Musicianで、継承によりこれら 3 つのアクセサーが利用可能になります。

于 2012-06-15T06:56:19.683 に答える