当前位置: 代码迷 >> Java相关 >> 求教关于父类 和 子类 之间的问题。
  详细解决方案

求教关于父类 和 子类 之间的问题。

热度:241   发布时间:2011-02-27 09:30:13.0
求教关于父类 和 子类 之间的问题。
我首先定义了一 对象 数组  Customer[] list = new Customer[10];
Customer 是父类, 而 CheckingAccount  是 Customer 的子类。
CheckingAccount  有 deposit() 方法 。


现在我定义了 Customer c = new CheckingAccount();然后将这个对象c 赋给 对象数组中的一单元,比如  list[0] ;
list[0] = c ;

为什么我无法如下操作

list[0].deposit();

有错误提示说 找不到 deposit() 这个方法。

求解啊求解啊。
----------------解决方案--------------------------------------------------------
因为你声明的数组list是Customer类型的,而Customer类不存在成员方法deposit。
即使你把Customer子类CheckingAccount对象放入数组中,编译器仍然把该对象视为Customer对象。
要想调用子类对象中的方法,你可以用一下语句:
程序代码:
if(list[0] instanceof CheckingAccount){
    ((CheckingAccount)list[0]).deposit();
}



----------------解决方案--------------------------------------------------------
这明显是一个多态问题,你这样写Customer c = new CheckingAccount();在编译期间生成的是Customer实例,当然访问不到子类的方法了
----------------解决方案--------------------------------------------------------
回复 2楼 homelove
谢谢了。
----------------解决方案--------------------------------------------------------
回复 4楼 ericstan
不客气,互相学习。
----------------解决方案--------------------------------------------------------
  相关解决方案