2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

クラス継承の名前変更、削除(aliasとundef )

Posted at

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')  
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?