| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 650 人关注过本帖
标题:求教关于父类 和 子类 之间的问题。
只看楼主 加入收藏
ericstan
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-11-20
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
求教关于父类 和 子类 之间的问题。
我首先定义了一 对象 数组  Customer[] list = new Customer[10];
Customer 是父类, 而 CheckingAccount  是 Customer 的子类。
CheckingAccount  有 deposit() 方法 。


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

为什么我无法如下操作

list[0].deposit();

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

求解啊求解啊。
搜索更多相关主题的帖子: deposit 
2011-02-27 09:30
homelove
Rank: 2
来 自:厦门
等 级:论坛游民
帖 子:19
专家分:84
注 册:2010-12-21
收藏
得分:15 
因为你声明的数组list是Customer类型的,而Customer类不存在成员方法deposit。
即使你把Customer子类CheckingAccount对象放入数组中,编译器仍然把该对象视为Customer对象。
要想调用子类对象中的方法,你可以用一下语句:
if(list[0] instanceof CheckingAccount){
    ((CheckingAccount)list[0]).deposit();
}


2011-02-28 11:08
gdy0349
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:上海
等 级:版主
威 望:11
帖 子:223
专家分:676
注 册:2008-11-12
收藏
得分:5 
这明显是一个多态问题,你这样写Customer c = new CheckingAccount();在编译期间生成的是Customer实例,当然访问不到子类的方法了
2011-02-28 15:11
ericstan
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-11-20
收藏
得分:0 
回复 2楼 homelove
谢谢了。
2011-03-02 08:39
homelove
Rank: 2
来 自:厦门
等 级:论坛游民
帖 子:19
专家分:84
注 册:2010-12-21
收藏
得分:0 
回复 4楼 ericstan
不客气,互相学习。
2011-03-02 12:17
快速回复:求教关于父类 和 子类 之间的问题。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017539 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved