クラス定義
- インスタンスを作成できる
- include による Mix-in(モジュールをクラスに混ぜること)ができる
class ChildClass < TestClass
def print() #実はオーバーライドしている
puts "this is child parint method"
puts TEISU #実は親クラスに定義されている定数
end
end
cls = ChildClass.new
cls.print()
実行結果
this is child parint method
定数
クラスの再定義
class Red
def print()
puts "red"
end
end
class Blue
def print()
puts "blue"
end
end
class Pallet < Red
#なんもなし
end
#定義を追加している
class Pallet
def printJa()
puts "赤"
end
end
pallet = Pallet.new
pallet.print()
pallet.printJa()
#スーパークラスを変えたので上書きされる(エラーが発生するのだ)
class Pallet < Blue
#なんもなし
end
pallet = Pallet.new
pallet.print()
pallet.printJa()
実行結果
red
赤
D:/daipresents/project/ruby/src/test/update_class.rb:30: superclass mismatch for class Pallet (TypeError)
モジュール定義
いまひとつ使い道がわからぬ。
- モジュールはインスタンスを持つことができない。
- モジュールは継承できない。
module ModuleTest
def print()
puts "堀北真希"
end
end
include ModuleTest
print() #いきなりメソッド呼び出し
class Use
include ModuleTest
end
use = Use.new
use.print()
実行結果
堀北真希
堀北真希
メソッド定義
class MethodTest2
def print0
puts "print method"
end
def print1 message #括弧はあってもなくても
puts message
end
def print2(one, two)
puts "print2(#{one}, #{two})"
end
end
cls = MethodTest2.new
cls.print0
cls.print0()
cls.print1("メッセージどす")
cls.print1 "メッセージどす" #括弧はあってもなくても
cls.print2(1, 2)
#cls.print2 1 2 <これはだめ
実行結果
print method
print method
メッセージどす
メッセージどす
print2(1, 2)
仮引数
引数にデフォルト値を設定できるのだ。
class KariParam
def print(message1, message2 = "なり")
puts message1 + message2
end
#def print(message1, message2 = "なり", message3)
#これはだめ。デフォルト値以降は全部デフォルト設定しないとだめ
#end
def print2(*param) #引数を可変長にしてみた
puts "えいえい#{param}"
end
end
cls = KariParam.new
cls.print("風林火山")
cls.print2()
cls.print2("1っこめー")
cls.print2("1っこめー", "2こめー")
実行結果
風林火山なり
えいえい
えいえい1っこめー
えいえい1っこめー2こめー
&がついたときは
作成中ですわ
引数の順序
- デフォルト式のない引数(複数指定可)
- デフォルト式のある引数(複数指定可)
- * を伴う引数(1つだけ指定可)
- & を伴う引数(1つだけ指定可)