色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java 中隱藏和覆蓋的區(qū)別

錢斌斌1年前8瀏覽0評論

在Java中,隱藏和覆蓋是兩個重要的概念,雖然它們有些相似,但又有明顯的區(qū)別。

隱藏的含義是在子類中定義了一個與父類同名的變量或方法,那么在子類的范圍內(nèi),父類的同名變量或方法就被隱藏了。

舉個例子:

class Parent {
public int num = 10;
public void print() {
System.out.println("I am Parent");
}
}
class Child extends Parent {
public double num = 3.14;
public void print() {
System.out.println("I am Child");
}
}

在這個例子中,Child類繼承了Parent類,但同時在Child類中定義了一個與Parent類同名的變量和方法。另外,num變量的類型與父類不同,這意味著它們不是同一個變量。

在創(chuàng)建Child對象時,可以訪問Child類中的num變量和print方法,也可以訪問繼承來的num變量和print方法。但是,如果通過Child對象來訪問num變量時,是訪問不到Parent中的num變量的,因為它被Child中的num變量隱藏了。

覆蓋的含義是在子類中重新定義了一個與父類同名的方法,但參數(shù)列表和返回值類型都必須與父類方法相同,這樣在子類中調(diào)用同名方法時,實際上是執(zhí)行子類中的方法。

還是用上面的例子:

Parent parent = new Parent();
parent.print(); // 輸出 "I am Parent"
Child child = new Child();
child.print();  // 輸出 "I am Child"

在這個例子中,Child類覆蓋了Parent類的print方法,當調(diào)用child對象的print方法時,實際上會執(zhí)行Child類中的方法。如果沒有覆蓋,則調(diào)用的是它繼承來的Parent類的方法。

總結(jié):

隱藏是子類中定義了一個與父類同名的變量或方法,從而遮掩了父類的同名變量或方法;而覆蓋是子類中重新定義了與父類同名的方法,從而實現(xiàn)了與父類方法相同的行為。