欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java 中隱藏和覆蓋的區別

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

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

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

舉個例子:

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變量的類型與父類不同,這意味著它們不是同一個變量。

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

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

還是用上面的例子:

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

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

總結:

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