Java 中的多态性和强制转换
Polymorphism and casting in Java
这两个对象的实例化方式有什么不同。
Employee emp = new Employee;
Employee emp = new Manager();
每种方法可以访问哪些不同的方法。什么是向下转型和向上转型?
这意味着经理 class 扩展或实现了员工 class。
你问题的第二部分我有点不清楚。但是必须转换 emp 的一个例子是,如果经理 class 有一个特定的方法,而雇员 class 没有。您需要转换 emp 才能使用特定于管理器的方法。
有点像
((Manager) emp).managerSpecificMethod();
多态性
是 class 扩展或实现另一个 class。在您的示例中,Manager class 似乎扩展了 Employee,因此您可以从其超级 class Employee 实例化一个 Manager。当您以这种方式实例化 Manager 对象时,您将只能访问 Employee 方法,但由于创建的对象是 Manager,因此将使用 Manager class 中的任何重写方法,而不是 Employee [=24] 中的方法=].如果有一个方法仅将 super class 作为参数,这将很有用,您可以通过这种方式实例化它并将其传递给 sub class.
铸造
在您的示例中向下转换为:
Employee emp = new Manager();
Manager castedEmp = (Manager)emp;
此处您正在实例化一个 Employee 对象,但由于您知道 emp 是一个 Manager,您可以将其向下转换为 Manager。
向上转型正好相反。你有一个 Manager 对象,你像这样将它转换为 Employee:
Employee emp = new Manager();
Employee castedEmp = (Employee)emp;
这两个对象的实例化方式有什么不同。
Employee emp = new Employee;
Employee emp = new Manager();
每种方法可以访问哪些不同的方法。什么是向下转型和向上转型?
这意味着经理 class 扩展或实现了员工 class。
你问题的第二部分我有点不清楚。但是必须转换 emp 的一个例子是,如果经理 class 有一个特定的方法,而雇员 class 没有。您需要转换 emp 才能使用特定于管理器的方法。
有点像
((Manager) emp).managerSpecificMethod();
多态性
是 class 扩展或实现另一个 class。在您的示例中,Manager class 似乎扩展了 Employee,因此您可以从其超级 class Employee 实例化一个 Manager。当您以这种方式实例化 Manager 对象时,您将只能访问 Employee 方法,但由于创建的对象是 Manager,因此将使用 Manager class 中的任何重写方法,而不是 Employee [=24] 中的方法=].如果有一个方法仅将 super class 作为参数,这将很有用,您可以通过这种方式实例化它并将其传递给 sub class.
铸造
在您的示例中向下转换为:
Employee emp = new Manager();
Manager castedEmp = (Manager)emp;
此处您正在实例化一个 Employee 对象,但由于您知道 emp 是一个 Manager,您可以将其向下转换为 Manager。
向上转型正好相反。你有一个 Manager 对象,你像这样将它转换为 Employee:
Employee emp = new Manager();
Employee castedEmp = (Employee)emp;