java - 理解首要概念

标签 java

我有两个类,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/

相关文章:

java - 用iBatis映射父子关系

Java PaintComponents 不绘制形状

java - SharePoint Web 服务 jax-ws 命名空间冲突

java - 是否可以在 hibernate 映射中不创建第三个表

java - Java 中的密码重置

java - 编译警告 - 弃用且未定义serialVersionUID

java - 重复的数组元素

javafx动画循环

Java Guice 与 servlet 线程 "main"java.lang.NoClassDefFoundError : com/google/inject/internal/util/$Preconditions 中出现异常

java - 如何使用JSch与子系统NETCONF建立SSH连接