クラス継承
スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
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のメソッドが定義されていませんと、エラーが出ます。
スポンサーリンク
<< 前の記事 : クラス拡張
- - 関連記事 -
- 特異クラスによるクラスメソッド定義・class << self ~ end
- モジュールの使い方
- クラス定義でメソッドへのアクセス制限・public, private, protected
- クラス拡張
- クラス変数・クラスメソッド
- アクセスメソッド(アクセサ)をattr_reader, attr_writer, attr_accessorで定義
- アクセスメソッド(アクセサ)
- Rubyのクラス定義・initialize(コンストラクタ)
- スーパークラスとサブクラス・クラス継承
- classメソッド・オブジェクトが属するクラスを調べる
- private, protected アクセス指定の違い
- オブジェクトのコピーを作る
- Rubyのinitializeメソッドの継承
スポンサーリンク