為什麼java的類是單繼承的,介面可以多繼承。

2021-08-20 21:10:50 字數 533 閱讀 3285

前乙個問題很容易想的到,如果乙個類 多繼承了兩個類,但是這兩個類中有相同的方法,那麼我子類呼叫,無法確定應該呼叫哪個方法。

但是介面設計成多繼承卻是可以避免上面的問題的。

因為介面只有抽象方法,具體方法只能由實現介面的類實現,在呼叫的時候始終只會呼叫實現類(也就是子類覆蓋的方法)的方法(不存在歧義),因此即使繼承的兩個介面中的方法名是一樣的,最終呼叫的時候也都是呼叫實現類中的那個方法,不會纏身歧義;而又因為介面只有靜態的常量,但是由於靜態變數是在編譯期決定呼叫關係的,即使存在一定的衝突也會在編譯時提示出錯;而引用靜態變數一般直接使用類名或介面名,從而避免產生歧義,因此從介面的變數是來看也是可以通過的。

class father implements firstfa,secondfa

}class ttfather implements fa }

inte***ce firstfa

inte***ce secondfa

inte***ce fa extends firstfa,secondfa

String類為什麼是final的

首先我們使用new建立乙個string物件的時候比如 string str new string 123 這句話裡面建立了兩個物件,第乙個在系統中建立了乙個 abc 這個字串 然後在創乙個str物件,然後在讓 123 這個字串的引用 創乙個string物件相當於創了兩個。在說說為啥string類設定...

String類為什麼是final的

1.string的不可變性 比如第一次賦值 abc 第二次賦值 abcd 不是在原記憶體位址修改資料,而是重新指向乙個新位址 新物件 2.string為什麼不可變 開啟jdk原始碼 final修飾的string,代表了string的不可繼承性,final修飾的char代表了被儲存的資料不可更改性。但...

為什麼nodejs是單程序的 Nodejs 程序

之前對這部分的內容很感興趣,沒想到讀起來有點晦澀,還是因為對伺服器的知識不是很了解。說道伺服器一般人都會想到tomcat或者jboss或者weblogic,現在流行起來的node總讓人不太放心,js 也能做伺服器?其實不然,首先乙個誤區就是node的伺服器是js寫出來的.其實它只有表面暴露給使用者使...