説明するために次の例を作成しました。とクラスのname
両方で使用すると、エラーが発生します。Song
KarokeSong
class Song
def initialize(name, artist, duration)
@name = name
@artist = artist
@duration = duration
end
def to_s
"Song: #{@name}--#{@artist} (#{@duration})"
end
end
class KarokeSong < Song
def initalize(name, kname, artist, duration, lyrics)
super(name, artist, duration)
@name = kname
@lyrics = lyrics
end
def to_s
"KS: #{@name}--#{@artist} (#{@duration}) [#{@lyrics}] **#{@name}**"
end
end
songA = Song.new("Bicyclops", "Fleck", 260)
puts songA.to_s
songB = KarokeSong.new("John", "Casey", "The Band", 400, "And now, the...")
puts songB.to_s
ファイルを実行しようとしたときに受け取ったエラーは次のとおりです。
stanley@ubuntu:~/Github/webdev_class/ruby$ ruby inheritance.rb
Song: Bicyclops--Fleck (260)
inheritance.rb:28:in `initialize': wrong number of arguments(5 for 3) (ArgumentError)
from inheritance.rb:28:in `new'
from inheritance.rb:28:in `<main>'
name
継承関係がある場合、名前を2回使用することは許可されていないと思います。Ruby が多重継承または V ポインターをサポートしていないという事実と関係があるかどうかはわかりません。何が起こっているかについての提案を前もってありがとう。