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

java隱藏和覆蓋一樣嗎

胡佳莉1年前6瀏覽0評論

Java中對于父類和子類中同名方法的重載機制,會產生兩種不同的實現方式:隱藏和覆蓋。盡管兩種實現方式的現象類似,但是它們背后的邏輯機制是不一樣的。

public class Parent {
public void hello() {
System.out.println("Hello from Parent!");
}
}
public class Child extends Parent {
public void hello() {
System.out.println("Hello from Child!");
}
}

在這個例子中,父類Parent中定義了一個hello方法,子類Child中也定義了一個同名的hello方法,在子類中的定義會覆蓋掉父類中的同名方法。在調用時,實際上調用的是具體對象類型的版本,如果是Child類型的對象,就調用Child中的hello方法,如果是Parent類型的對象,就調用Parent中的hello方法。

覆蓋的本質是多態,是運行時決定具體調用哪個方法的。如果子類重寫了父類的方法,那么子類對象的引用調用該方法時就會調用子類中的實現,而不是父類中的實現,這就是覆蓋。

public class Main {
public static void main(String[] args) {
Parent parent = new Parent();
Child child = new Child();
parent.hello(); // 輸出:Hello from Parent!
child.hello(); // 輸出:Hello from Child!
Parent parent2 = new Child();
parent2.hello(); // 輸出:Hello from Child!
}
}

從上面的代碼可以看到,當我們將Child類型的對象賦值給Parent類型的引用parent2時,雖然我們用的是Parent類型的引用來調用hello方法,但是實際上調用的是Child類中的hello方法,這就是Java中的多態機制。