Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的多态性与转换_Java_Oop_Polymorphism - Fatal编程技术网

Java中的多态性与转换

Java中的多态性与转换,java,oop,polymorphism,Java,Oop,Polymorphism,这两个对象实例化的方式有什么不同 员工emp=新员工 员工emp=新经理 每种方法可以访问哪些不同的方法。什么是下行和上行?这意味着Manager类扩展或实现了Employee类 你问题的第二部分我有点不清楚。但是必须强制执行emp的一个例子是,如果Manager类具有Employee类没有的特定方法。为了使用特定于管理器的方法,您需要施放emp 差不多 经理emp.managerSpecificMethod 多态性 当一个类扩展或实现另一个类时。在您的示例中,似乎Manager类扩展了Empl

这两个对象实例化的方式有什么不同

员工emp=新员工

员工emp=新经理


每种方法可以访问哪些不同的方法。什么是下行和上行?

这意味着Manager类扩展或实现了Employee类

你问题的第二部分我有点不清楚。但是必须强制执行emp的一个例子是,如果Manager类具有Employee类没有的特定方法。为了使用特定于管理器的方法,您需要施放emp

差不多 经理emp.managerSpecificMethod

多态性 当一个类扩展或实现另一个类时。在您的示例中,似乎Manager类扩展了Employee,因此您可以从其超类Employee实例化一个Manager。以这种方式实例化Manager对象时,您将只能访问Employee方法,但由于创建的对象是Manager,因此将使用Manager类中的任何重写方法,而不是Employee类中的方法。如果有一个方法只将超类中的一个参数作为参数,那么这很有用,您可以通过这种方式实例化它并将其传递给子类

铸造 在您的示例中,向下投射是:

Employee emp = new Manager();
Manager castedEmp = (Manager)emp;
在这里,您正在实例化一个Employee对象,但由于您知道emp是一个经理,所以可以将其向下转换为经理

向上投射正好相反。您有一个Manager对象,并将其强制转换为Employee,如下所示:

  Employee emp = new Manager();
  Employee castedEmp = (Employee)emp;