如果在Parent类和Child Class中有两个具有相同名称的方法,例如:
家长班:
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();
这样,方法display()
将用于子项。但是如果我们想在父类中使用方法显示,那怎么办呢?
提前致谢!
答案 0 :(得分:2)
这是因为首先你这样做:
Employee [] arrEm = new Employee [4];
这将为对象生成arrEm数组。然后你这样做:
arrEm[0]= new Faculty("ahmad" , 1000 , "Phd" , 10 );
您使用arrEm [0]来引用子类对象,以便它将使用子项的显示。这是多态性的正常情况。你可以在谷歌上搜索它。它很有用。如果要使用父显示,请使用
arrEm[0] = new Employee;
或者有一种方法可以像
一样向上转播child a= new child();
父母p =(父母)a;
这个a.display()将使用父类中的显示。
答案 1 :(得分:0)
您必须将其称为以下内容:
super.display();
答案 2 :(得分:0)
然后要么不在子类中声明显示方法,要么创建父类的实例而不是像rrEm[0]= new Employee("ahmad" , 1000 )
这样的子类(虽然我认为你不想这样)或者从子类调用父方法,如{ {1}}
答案 3 :(得分:0)
如果要调用父类的显示方法,则应将super.dislay()添加到Faculty类的display()方法中。
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");
在这里你不能利用教师班的成员(学位,教学时)。