ruby 中super和super 的區別

2022-07-24 11:39:10 字數 1003 閱讀 8646

#

我們用乙個示例來演示下這個機制

class

parent

defsay(message)

puts message

endendclass child def

say(message)

super

endend

child.new.say(

'hi!')

#輸出hi

如果parent中的say是乙個不帶引數的方法,那結果會怎麼樣 ?

class

parent

defsay puts message

endendclass child def

say(message)

super

endend

child.new.say(

'hi!')

#執行上面的**會發現丟擲了 argumenterror (wrong number of arguments (given 1, expected 0)) 異常。

為了避免這個問題,也為了解決這個問題,我們可以明確的指出 super 不需要把子類中相關的引數傳遞給父類

為此,我們需要在 super 後新增一對小括號 () ,即 super() 明確的呼叫父類而不傳遞任何引數

1

class

parent

2def

say3 puts "

i'm the parent"4

end5

end6

7class child 8def

say(message)

9super()

10end

11end

12 child.new.say('

hi!')13

#輸出i'm the parent

Ruby 的 super 怎麼用

ruby 的 super 僅用於繼承中,用來給子方法呼叫父方法。class parent def method a,b puts endendclass childa parent def method a,b super b,a endendclass childb parent def meth...

java中this和super的區別

一 this 1 屬性訪問 訪問本類中的屬性,如果本類中沒有此屬性,則從父類中繼續查詢 2 方法 訪問本類中的方法,如果本類中沒有此方法,則從父類中繼續查詢 3 呼叫構造 呼叫本類構造,必須放在構造方法的首行 4 表示當前物件 二 super 1 屬性訪問 訪問父類中的屬性 2 方法 直接訪問父類中...

Java中this和super的區別

this通常指當前物件,super則指父類的。當你想要引用當前物件的某種東西,比如當前物件的某個方法,或當前物件的某個成員,你便可以利用this來實現這個目的,當然,this的另乙個用途是呼叫當前物件的另乙個建構函式。如果你想引用父類的某種東西,則非super莫屬。在一般方法中最普遍的情況就是,在你...