ruby 的 super 僅用於繼承中,用來給子方法呼叫父方法。
class parent
def method(a, b)
puts "# - #"
endendclass childa < parent
def method(a, b)
super(b, a)
endendclass childb < parent
def method(a, b)
super
endendchild_a = childa.new
child_b = childb.new
child_a.method('a', 'b')
child_b.method('a', 'b')
b - a
a - b
super 用於呼叫父類的方法,分為帶引數和不帶引數兩種使用方法。
不帶引數呼叫時,不要寫括號,寫括號就變成帶引數呼叫了,這是需要注意的點。
假設父方法是不定引數*args
的方式,而如果子方法通過super()
呼叫父方法,此時子方法的引數並沒有傳給父方法,這種將會出現隱秘的 bug。
ruby 中super和super 的區別
我們用乙個示例來演示下這個機制 class parent defsay message puts message endendclass child def say message super endend child.new.say hi 輸出hi 如果parent中的say是乙個不帶引數的方法,...
Super的使用, this 與super
super 關鍵字可在子類中訪問父類的方法,也可以訪問父類的屬性 其實和this關鍵字聯絡起來對比理解就明白了 乙個三層結構的例子 b繼承a,那麼在例項化b的時候,a和b哪個構造方法先執行呢?結果 先執行a的構造方法,然後才執行b的構造方法,因為有了父類才會有子類 在jvm的物理結構 在堆中 先構造...
windbg 用WinDbg探索ruby的奧秘
寫這篇文章是受 url 從main.c開始走進ruby 登上除錯ruby之旅 url 的啟發,不同的是該文章用的是gdb,gdb雖然很強大,但是畢竟是命令列,在除錯的時候,可能同時需要檢視許多資訊,比如call statck,彙編 源 等等,命令列就有點力不從心,所以續寫一篇,改gdb為同樣強大的w...