2014-10-29 70 views
-1

我有一个超类叫做Employee和我共进晚餐类称为Full_TimePart_Time 并调用Company另一个类与Employee类我想创建显示这仅仅是全部时间的方法的组合关系。然而 数据,所以我写的代码: -简单的继承

public void display_All_Full(){ 
    for (int i = 0;i<n_b_E;i++){ 
     if (a_r_Employee[i] instance_of Full_Time){ 
      ->a_r_Employee[i].display_Full(); 
     } 
    } 
} 

,然后它说错误的行号3: 方法display_Full()是未定义的类型Employee

但我已经写在Full_Time类中的方法是从超类Employee

回答

7

我怀疑你需要在执行方法之前,员工转换为全时员工的一个子类:

((Full_Time)a_r_Employee[i]).display_Full(); 

它这样做是安全的,因为您已经确认该雇员的类型为Full_Time

或者,您可以使Employee超级类为抽象类,然后在中定义抽象方法: 例如

public abstract void display(); 

然后,这难道不需要的演员,但你需要实现的方法,员工

+0

非常感谢你,这是快速和有益的 – 2014-10-29 17:57:07

0

理想情况下的每个子类中,你应该尽量利用你的对象层次。您可以在您的Employee基类中定义一个名为display()的抽象方法。在每个子类中,不是编写方法display_Full()或display_Part(),而是覆盖display(),以便为子类所代表的员工类型执行相应的实现。

然后在你的循环,你会简单地做:

if (a_r_Employee[i] instance_of Full_Time){ 
    ->a_r_Employee[i].display(); 
} 

没有必要的铸造。

更新:我没有注意到,以前的答案也建议抽象的display()方法。