2015-04-03 128 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)的成员。

相关问题