| 
 
| 赞 | 295 |  
| VIP | 11 |  
| 好人卡 | 74 |  
| 积分 | 233 |  
| 经验 | 281171 |  
| 最后登录 | 2025-10-30 |  
| 在线时间 | 9469 小时 |  
 Lv5.捕梦者 (暗夜天使)   只有笨蛋才会看到 
	梦石1 星屑22284 在线时间9469 小时注册时间2012-6-19帖子7126  
 | 
| 本帖最后由 喵呜喵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')
 | 
 |