if there are two methods with same name in Parent class and Child Class ..?
如果父类和子类中有两个同名的方法,例如:
父类:
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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" ); } } |
子类:
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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); } |
号
我创建了一个这样的对象:
1 2 | Employee[] arrEm = new Employee[4]; arrEm[0] = new Faculty("ahmad", 1000,"Phd", 10); |
所以如果我写
1 | arrEm[0].display(); |
。
这样,方法
事先谢谢!
这是因为首先你要做的是:埃多克斯1〔2〕这将为对象生成arrem数组。然后你这样做:埃多克斯1〔3〕使用arrem[0]引用子类对象,以便它使用子类的显示。这是多态性的正常情况。你可以在谷歌上搜索。它很有用。如果要使用父显示,请使用
1 | arrEm[0] = new Employee; |
号
或者有一种向上的方式
1 | child a= new child(); |
父级P=(父级)A;
这个a.display()将使用父类中的显示。
如果要调用父类的display方法,应该在faculty类的display()方法中添加super.dislay()。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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); } |
。
或如果不想从子类调用它,那么使用父类构造函数而不是子类创建对象。
1 2 3 | Employee [] arrEm = new Employee [4]; //calling parent class constructor arrEm[0]= new Employee("ahmad"); |
在这里你不能利用教员班的成员(学位、教学时间)。
那么要么不要在子类中声明显示方法,要么创建父类的实例,而不是像e
你必须这样称呼它:
1 | super.display(); |