2015-04-03 117 views
-3

如果父類和子類中有兩個名稱相同的方法..?如果在父類和子類中有兩個名稱相同的方法..?

例如: 父類是:

public abstract class Employee implements Payments { 
private String name; 
protected double basicSalary; 
public Employee(String name , double basicSalary) 
{ 
this.basicSalary = basicSalary; 
this.name = name; 
} 
public void display() 
{ 
System.out.println(" Name: " + name + " - Basic Salary: " + basicSalary +"SR"); 
} 

和兒童是:

public class Faculty extends Employee { 
    private String degree; 
    private int teachingHours; 

    public Faculty(String name , double salary , String degree , int teachingHours) 
    { 
     super(name , salary); 
     this.degree=degree; 
     this.teachingHours = teachingHours; 
    } 
    public void display() 
    { 
     System.out.println(" Name: " +getName() + " - Degree:" +degree); 
    } 

和我創建這樣一個對象..

Employee [] arrEm = new Employee [4]; 

     arrEm[0]= new Faculty("ahmad" , 1000 , "Phd" , 10); 

所以,如果我寫

arrEm[0].display(); 

這種方法顯示將用於兒童 ,但如果我們想要使用父類中的方法顯示..它是如何做到的?

提前致謝!

+3

** java!== javascript ** – Mritunjay 2015-04-03 16:40:39

+0

可能的重複http://stackoverflow.com/questions/268929/in-java-how-do-i-call-a-base-classs-method-from-重寫方法在 – 2015-04-03 16:41:09

+0

刪除Javascript標記 – 2015-04-03 16:43:59

回答

0

這是因爲首先你做 Employee [] arrEm = new Employee [4]; 這將使arrEm數組對象,那麼你這樣做 arrEm[0]= new Faculty("ahmad" , 1000 , "Phd" , 10); 您使用arrEm [0]來引用子類對象,因此它將使用子顯示這是多態的正常情況,您可以在Google上搜索它的實用程序。如果你想使用父顯示使用

arrEm[0] = new Employee; 

或有一種方法上溯造型像

child a= new child(); 

家長P =(父)一個;

這a.display()將使用顯示在父類

0

你要稱呼其爲以下幾點:

super.display(); 
+0

對不起,我還不明白..我嘗試寫「arrEm [0] .super.dislay();」 他給我一個錯誤,如果我寫「super.display();」我不選擇對象,所以如何java知道我的意思是這個arrEm [0]還是arrEm [1]?我試着寫「\t \t super.dislay();」在主類他給我錯誤 – 2015-04-03 16:55:04

0

然後要麼不子類中聲明顯示方法或類似rrEm[0]= new Employee("ahmad" , 1000 )創建父類的實例,而不是子類(雖然我不認爲你想要這個),或者從子類調用父類的方法一樣super.display()

0

如果你想調用父類的顯示方法,你應該添加super.dislay()來顯示系類的()方法。

public class Faculty extends Employee { 
private String degree; 
private int teachingHours; 

public Faculty(String name , double salary , String degree , int teachingHours) 
{ 
    super(name , salary); 
    this.degree=degree; 
    this.teachingHours = teachingHours; 
} 
public void display() 
{ 
    //calling display() method of parent class 
    Super.display(); 
    System.out.println(" Name: " +getName() + " - Degree:" +degree); 
} 

或 如果您不希望從子類調用它然後使用父類的構造並不子類創建對象做。

Employee [] arrEm = new Employee [4]; 
    //calling parent class constructor 
    arrEm[0]= new Employee("ahmad"); 

在這裏你不能使用系類(學歷,teachingHours)的成員。

相關問題