求教关于父类 和 子类 之间的问题。
我首先定义了一 对象 数组 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();
}
((CheckingAccount)list[0]).deposit();
}
----------------解决方案--------------------------------------------------------
这明显是一个多态问题,你这样写Customer c = new CheckingAccount();在编译期间生成的是Customer实例,当然访问不到子类的方法了
----------------解决方案--------------------------------------------------------
回复 2楼 homelove
谢谢了。 ----------------解决方案--------------------------------------------------------
回复 4楼 ericstan
不客气,互相学习。 ----------------解决方案--------------------------------------------------------