JAVA中的覆蓋問題

2021-07-11 21:52:23 字數 863 閱讀 3787

1、

子類方法的名稱、引數簽名和返回型別必須與父類方法的名稱、引數簽名和返回型別一致,修飾符可以相同也可以不同,但子類的訪問許可權不能低於父類的訪問許可權。

2、 父類的靜態方法不能被子類覆蓋為非靜態方法。

3、 子類可以定義與父類的靜態方法同名的靜態方法,以便在子類中隱藏父類的靜態方法。(靜態方法只能隱藏,不能覆蓋)

子類隱藏父類的靜態方法和子類覆蓋父類的例項方法區別:執行時,jvm把靜態方法和所屬的類繫結,而把例項方法和所屬的例項繫結。

4、 父類的非靜態方法不能被子類覆蓋為靜態方法。

5、 父類的非抽象方法可以被覆蓋為抽象方法。

class

demo

}

問:下面那些方法可以存在於demo子類中?

//a.

public

intshow(int a,int b)

//b.

private

intshow(int a,int b)

//c.

private

intshow(int a,long b)

//d.

public

short

show(int a,int b)

//e.

static

int show(int a,int b)

答:

//a.可以,覆蓋;

//b.不可以,許可權不夠;

//c.可以,相當於過載;

//d.不可以,不是覆蓋,亦不是過載;

//e.不可以,父類的非靜態方法不能被子類覆蓋為靜態方法。

Java中的重寫覆蓋問題

1.首先,重寫等於覆蓋,常發生於父類與子類之間的變數和方法之間。2.重寫,在執行期間採用多型的形式。3.重寫的方法不能比被重寫的方法有跟高的訪問許可權和更多的異常。4.成員變數的重寫與方法的重寫是不同。覺得這裡可以用c 的語言進行解釋 父類的成員變數被繼承後並重寫,其依然存在與子類之中,而子類重寫的...

java中的覆蓋

override可以翻譯為覆蓋,從字面就可以知道,它是覆蓋了乙個方法並且對其重寫,以求達到不同的作用。對我們來說最熟悉的覆蓋就是對介面方法的實現,在介面中一般只是對方法進行了宣告,而我們在實現時,就需要實現介面宣告的所有方法。除了這個典型的用法以外,我們在繼承中也可能會在子類覆蓋父類中的方法。在覆蓋...

java 字段覆蓋 field 問題

欄位的覆蓋 public class father class son extends father此時兩個輸出分別為 sonfather 所以說,字段覆蓋並不會導致父類的的那個欄位沒作用了,當子類例項向上轉型為父類例項時,通過父類例項使用字段,呼叫的則是父類中的字段。不僅僅是向上轉型會這樣,看下面...