クラスの継承について説明していきます。
こちらの理解が文法プログラミングからの卒業の第一歩になります。
クラスを継承することによって、新しいクラスでも継承元のクラスの機能が使用できるようになり、新たに必要な機能だけを実装することによってコーディングの量を減らしたりすることができます。
よく使用される例としては異なるクラスで同じ機能が必要な場合、元のクラスに共通の機能を定義しておき、複数のクラスで継承するといった方法があります。
クラスの継承
以下に簡単な継承の例を記載します。
クラス名の横に「<」を記載し、その右に継承したいクラスを記載します。
以下の例では「User」クラスが「HelloWorld」クラスを継承しているので、Userクラスでもhelloメソッドの使用が可能になります。
class HelloWorld
def hello
puts "こんにちは。#{@name}さん"
end
end
class User < HelloWorld
def initialize(name)
@name = name
end
end
user1 = User.new('Kawasaki')
user1.hello
user2 = User.new('Suzuki')
user2.hello
#実行結果=>
こんにちは。Kawasakiさん
こんにちは。Suzukiさん
オーバーライド
クラス内で継承したクラスのメソッドを上書きすることができます。
それをオーバーライドと呼びます。
他の言語ですとメソッド名が同じかつ引数が同じなどの制約がありますが、Rubyではメソッド名が同じであればオーバーライドします。
以下の例ではUserクラス内でhelloメソッドをオーバーライドしています。
また、継承元のhelloメソッドを呼び出すこともでき、その場合は「super」で呼び出します。
class HelloWorld
def hello
puts "こんにちは。#{@name}さん"
end
end
class User < HelloWorld
def initialize(name)
@name = name
end
def hello
super
puts "Hello,#{@name}"
end
end
user1 = User.new('Kawasaki')
user1.hello
user2 = User.new('Suzuki')
user2.hello
#実行結果=>
こんにちは。Kawasakiさん
Hello,Kawasaki
こんにちは。Suzukiさん
Hello,Suzuki
コメント