赞 | 287 |
VIP | 11 |
好人卡 | 74 |
积分 | 226 |
经验 | 281171 |
最后登录 | 2024-10-28 |
在线时间 | 9407 小时 |
Lv5.捕梦者 (暗夜天使) 只有笨蛋才会看到
- 梦石
- 1
- 星屑
- 21589
- 在线时间
- 9407 小时
- 注册时间
- 2012-6-19
- 帖子
- 7117
|
本帖最后由 喵呜喵5 于 2020-9-1 16:14 编辑
不正确
不是啥带括号不带括号只导致继承不下来啥的……是不正确的使用括号代码会直接报错…………
super 的作用是调用父类的 initialize 方法,省略括号时,表示调用方法的参数直接使用本方法的参数,
但有的时候,子类方法所需的参数和父类方法所需的参数是不一样的,这时候省略括号就会报参数不一致的错误
你可以试着分析一下下面这段代码:
- class A
- def initialize(a = 'A')
- p a
- end
- end
- A.new()
- A.new('AA')
- class B < A
- def initialize(a)
- super
- end
- end
- B.new('B')
- class B2 < A
- def initialize(a)
- super(a)
- end
- end
- B2.new('B2')
- class B3 < A
- def initialize(a)
- super()
- end
- end
- B3.new('B3')
- class C < A
- def initialize
- super('C')
- end
- end
- C.new()
- class D < A
- def initialize(a, b, c)
- p a
- super(b)
- p c
- end
- end
- D.new('D1','D2','D3')
复制代码
|
|