1

此問題基於這樣一個概念,即當我將子類 的類的引用存儲到父類變量中時。並且使用該變量時,我調用兩個類中都存在的方法Child- Parent.Here子方法應該被引發,但是,當我通過引用作爲參數時不會發生,爲什麼?方法重寫引用作爲參數傳遞

class Parent 
{ 
public void show() 
    { 
    System.out.println("Parent"); 
    } 
} 

class Child extends Parent 
{ 
    public void show() 
    { 
    System.out.println("Child"); 
    } 
} 

public class Call { 
    public static void main(String args[]) 
    { 
    Parent p=new Child(); 
    p.show(); 
    } 
} 

產出預期: 「兒童」 實際輸出: 「孩子」[預期]

但是,

class Parent 
{ 
public void show(Parent x) 
    { 
    System.out.println("Parent"); 
    } 
}  
class Child extends Parent 
{ 
public void show(Child x) 
    { 
    System.out.println("Child"); 
    } 
} 

public class Call { 
public static void main(String args[]) 
    { 
    Parent p=new Child(); 
    p.show(new Child()); 
    } 
} 

爲什麼輸出是 「父」,在這種情況下?

回答

0

這是因爲在第二個例子中,孩子不是在重覆執行show方法。所以當你調用p.show(new Child())時,它實際上調用了父類的子方法。

希望它很清楚。