子類別,同名函數 使用super問題

wayout99 2016-09-25 11:02:33
您好:
我參考 書籍,他說在子類別 與父類別同名方法時,如果改變參數列表,將不能使用super關鍵字,否則會提示錯誤。
但 我實際在 子show(name) ,使用super;卻沒有警告訊息!
請問,這樣正確嗎?



class Car
def go()
puts "汽車正在行駛";
end

def show
puts "展示汽車";
end

end

class BMWCar < Car
def go()
puts "BMW Runing";
end

def show(name) # 即使參數不同,一樣覆蓋
super()
puts "BMW正在展示 #{name} " ;
end

end

bmw= BMWCar.new();
bmw.go();
bmw.show("I9");

...全文
5562 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wayout99 2017-01-01
  • 打赏
  • 举报
回复
您好: 謝謝,所以只在 父類別 FUNC 有參數 show(arg1) ,子類別 沒有 參數 show() 情況下,就會出現問題? 謝謝!
blackant2 2016-12-22
  • 打赏
  • 举报
回复
2.2.0 :001 > class Car 2.2.0 :002?> def go() 2.2.0 :003?> puts "汽車正在行駛"; 2.2.0 :004 > end 2.2.0 :005?> 2.2.0 :006 > def show( arg1) 2.2.0 :007?> puts "展示汽車"; 2.2.0 :008 > end 2.2.0 :009?> 2.2.0 :010 > end => :show 2.2.0 :011 > 2.2.0 :012 > class BMWCar < Car 2.2.0 :013?> def go() 2.2.0 :014?> puts "BMW Runing" 2.2.0 :015?> end 2.2.0 :016?> 2.2.0 :017 > def show 2.2.0 :018?> super() 2.2.0 :019?> puts "BMW正在展示 " 2.2.0 :020?> end 2.2.0 :021?> 2.2.0 :022 > end => :show 2.2.0 :023 > 2.2.0 :024 > bmw= BMWCar.new() => #<BMWCar:0x007f825a92d9c8> 2.2.0 :025 > bmw.go() BMW Runing => nil 2.2.0 :026 > bmw.show ArgumentError: wrong number of arguments (0 for 1) from (irb):6:in `show' from (irb):18:in `show' from (irb):26 from /Users/anfeng/.rvm/rubies/ruby-2.2.0/bin/irb:11:in `<main>'
wayout99 2016-09-27
  • 打赏
  • 举报
回复
再請指導一下! 謝謝!

2,763

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ruby/Rails
社区管理员
  • Ruby/Rails社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧