gpt4 book ai didi

java - 了解覆盖概念

转载 作者:行者123 更新时间:2023-11-30 06:47:17 25 4
gpt4 key购买 nike

我有两个类,EmployeeDepartment

DepartmentEmployee 的子类。

代码如下:

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() 不会覆盖 EmployeegetEmployeeDetails(),因为它有不同的参数类型(一个接受 2 个 String,另一个接受一个 String 和一个 int)。这就是为什么e1.getEmployeeDetails("Manish", "10");调用基类Employee的方法,需要2个String .

另一方面,Departmentprint() 确实覆盖了 Employeeprint(),因为它具有相同的签名。因此 Departmentprint() 被执行。

关于java - 了解覆盖概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46177060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com