㈠ java中重載與重寫的區別
java中有兩個東西,一個是 方法重載 一個是 成員覆寫 ,
方法重載 是指 一個類裡面可以有多個方法,而且方法名稱相同,但是方法的參數類型或者參數個數不同,功能也可以不同。
成員覆寫 是指子類繼承父類後,可以覆蓋掉父類的 方法 和 屬性。子類的方法和屬性名稱類型與父類的一樣,就覆蓋掉父類的屬性和方法。
重載只能是方法,在同一個類中。
覆寫是子類與父類之間,屬性與方法都可以覆寫。
其實重寫就是重載,而令一個是覆寫。
㈡ java中父類私有成員A(變數或方法),子類中也定義了同樣的成員A。這是覆蓋還是重載或者跟父類無關的成員A
在Java編程語言中,方法是可以被重寫(override)的,而成員變數則不能。當子類中定義了一個與父類同名的方法時,這被稱為方法的重寫。然而,如果子類中定義了一個與父類同名的成員變數,那麼這並不會導致方法重寫。實際上,子類中的成員變數與父類中的成員變數是兩個獨立的實體,它們分別屬於不同的作用域。
具體來說,當子類中定義了一個與父類同名的成員變數時,編譯器會認為它們是兩個不同的變數,一個屬於父類(super),一個屬於當前子類(this)。這並不會引發任何覆蓋或重寫的行為,因為成員變數的覆蓋機制並不存在。
例如,假設父類中有一個私有變數x,子類中也定義了一個同名的變數x,那麼在子類中,這兩個x變數是完全獨立的,互不影響。在父類的方法中訪問x時,只會訪問到父類中的x;而在子類的方法中訪問x時,只會訪問到子類中的x。這在編譯和運行時都是正確的。
總結來說,成員變數的同名並不會導致覆蓋或重寫,它們各自獨立存在,屬於不同的作用域。理解這一點對於編寫清晰、無誤的Java代碼至關重要。