aliasについて
クラスの継承において、既に存在するメソッドに別の名前を割り当てたいときにaliasを使う。書き方としては、引数にメソッド名かシンボル名を指定する。
alias 別名 元の名前
または
alias :別名 :元の名前
実際のコードで確認すると、
class Class1
def hello
"hello"
end
end
class Class2 < Class1
alias old_hello hello
def hello
"#{old_hello}, again"
end
end
obj = Class2.new
p obj.old_hello #=> "hello"
p obj.hello #=> "hello, again"
undefについて
定義されたメソッドをなかったことにしたいときに、undefを使う。書き方として、aliasと同様に引数にメソッド名かシンボル名を指定する。
undef メソッド
または
undef :メソッド
class Class1
def hello
"hello"
end
end
class Class2 < Class1
undef hello
end
obj1 = Class1.new
obj2 = Class2.new
p obj1.hello #=>"hello"
p obj2.hello #=>エラー(undefined method `hello')
同じクラス内に用いても、
class Class1
undef hello
def hello
"hello"
end
end
obj1 = Class1.new
p obj1.hello #=> エラー(undefined method `hello' for class `Class1')