クラス継承

スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 |
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般

スーパークラスからのクラス継承により、サブクラスで機能を拡張することもできます。

スポンサーリンク

class Profile
    @@count = 0    # 人数
    def initialize(name_one)
        @name = name_one
        @@count += 1    # プロフィールが作成されるたびに人数をカウントアップ
    end
    # 人数を取得するクラスメソッド
    def Profile.count
        return @@count
    end
    # 名前の参照と変更
    attr_accessor :name
end
 
class NamecountProfile < Profile
    # name(名前)の文字数を数える
    def name_count
        return name.split(//).size
    end
end
 
keiko = NamecountProfile.new("keiko yamamoto")
puts "#{keiko.name} は、 #{keiko.name_count} 文字です。"

実行結果。

keiko yamamoto は、 14 文字です。

クラスの継承は・・・

class サブクラス名 < スーパークラス名

と書いて行います。
サブクラスで拡張したインスタンスメソッドを利用するには、サブクラスのインスタンス化を行う必要があります。
上記の例で、親クラスのインスタンス化を行い・・・

keiko = Profile.new("keiko yamamoto")
puts "#{keiko.name} は、 #{keiko.name_count} 文字です。"

と書いたとしても・・・

undefined method `name_count'

と、name_countのメソッドが定義されていませんと、エラーが出ます。

スポンサーリンク
 
スポンサーリンク