我有两个类,Employee
和 Department
。
Department
是 Employee
的子类。
代码如下:
public class Employee {
public void getEmployeeDetails(String name , String age) {
System.out.println("Employee.getEmployeeDetails()");
}
public void print() {
System.out.println("Employee.print()");
}
}
public class Department extends Employee {
public void getEmployeeDetails(String name , int age) {
System.out.println("Department.getEmployeeDetails()");
}
public void print() {
System.out.println("Department.print()");
}
}
我正在运行以下代码。
public static void main(String[] args) {
Employee e1 = new Department();
e1.getEmployeeDetails("Manish", "10");
e1.print();
}
输出为
Employee.getEmployeeDetails()
Department.print()
当我运行 getEmployeeDetails()
方法时,JVM 调用父类,但是当我调用 print()
方法时,JVM 调用子类。
为什么会出现这样的情况?
最佳答案
Department
的
getEmployeeDetails()
不会覆盖 Employee
的 getEmployeeDetails()
,因为它具有不同的功能参数类型(一个需要 2 个 String
,另一个需要一个 String
和一个 int
)。这就是为什么 e1.getEmployeeDetails("Manish", "10");
调用基类 Employee
的方法,该方法需要 2 个 String
.
另一方面,Department
的 print()
确实会覆盖 Employee
的 print()
,因为它具有相同的签名。因此Department
的print()
被执行。
关于java - 理解首要概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46177060/