継承を使えば既にあるクラスの機能を引き継いで新しいクラスを作る事ができます。
継承の仕方は簡単です。
class クラス名 < 継承したいクラス名 end
「<」を作成するクラス名の後に書き、つづけて継承するクラス名を書くだけです。
今回はHTMLのカレンダーを出力するメソッドを持ったクラスを作ってみます。
まず前回作ったカレンダークラスを「library.rb」という名前で保存します。
2行目の「require “library”」で保存したファイルを読み込みます。
#クラス定義 require "library" class HtmlCalendar < Calendar def disp_html calendar = "<table border>\n" calendar << "<tr><td>日</td><td>月</td><td>火</td><td>水</td><td>木</td><td>金</td><td>土</td></tr>\n" calendar << "<tr>" #第1週の空白セルを作成 if @firstday.wday != 0 then for x in 1..@firstday.wday do calendar << "<td></td>" end end #1日から末日までのセル作成 for d in 1..@lastday.day do if @firstday.wday == 0 then calendar << "</tr>\n" calendar << "<tr>" end calendar << "<td>#{@firstday.day}</td>" @firstday = @firstday.next end #最終週の空白セルを作成 if @firstday.wday != 0 then for x in @firstday.wday..6 do calendar << "<td></td>" end end calendar << "</tr>\n" calendar << "</table>" puts calendar end end a = HtmlCalendar.new(2010,9) a.disp_html #a.disp
カレンダークラスにあった「initialize(y,m)」や「@firstday、@lastday」が
ありません。これは「Calendar」クラスを継承することにより、記述しなくても
利用可能になります。
45行目でコメントアウトしてある「disp」メソッドも継承しているので利用することができます。
最近のコメント