Java中的多态性和铸造

时间:2015-05-11 21:24:05

标签: java oop polymorphism

实例化这两个对象的方式有何不同。

ListViewItem item = (Meeting)MyMeetsRow.SelectedItems[0]; Meeting AMeeting = new Meeting(); AMeeting.Invitees = item.Invitees;

Employee emp = new Employee;

每种方法可以使用哪些不同的方法。什么是向下倾斜和向上倾斜?

2 个答案:

答案 0 :(得分:1)

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

你的问题的第二部分对我来说有点不清楚。但是,如果Manager类具有Employee类没有的特定方法,则必须强制转换emp的示例。您需要强制转换emp才能使用特定于Manager的方法。

喜欢的东西 ((Manager) emp).managerSpecificMethod();

答案 1 :(得分:0)

多态性

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

铸造

你的例子中的向下转型将是:

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

在这里,您要实例化一个Employee对象,但由于您知道emp是一个Manager,您可以将它向下转换为Manager。

向上倾斜恰恰相反。您有一个Manager对象,并将其转换为Employee,如下所示:

  Employee emp = new Manager();
  Employee castedEmp = (Employee)emp;
相关问题