java问题 要求详细解释下

对于如下代码段classA{publicAfoo(){returnthis;}}classBextendsA{publicAfoo(){returnthis;}}clas... 对于如下代码段
class A{public A foo(){return this;}}
class B extends A{public A foo(){return this;}}
class C extends B
{
-----------------------------------
}

可以放入到横线位置,使程序正确编译运行,而且不产生错误的选项是(C)
A. public void foo(){} B. public int foo(){return 1;}
C.public A foo(B b){return b;} D. public A foo(){return A;}
展开
 我来答
百度网友7cd29db
2013-12-30 · TA获得超过213个赞
知道小有建树答主
回答量:186
采纳率:66%
帮助的人:77.2万
展开全部
在父类中定义了相同签名的方法(签名:方法名称,输入的参数)
在子类中只能复写,而不能重新定义
所以方法public A foo()已经在A中定义了,所以只能覆写,所谓的覆写:只是重写方法体,像B的的做法一样。
A: 对方法foo()进行了重新定义,(把返回类型改变了)所以错误
B:同上,返回类型重新定义为int了
C:正确,因为这里重新定义了一个方法(名称+输入的参数)签名和父类中的不一样。
D:类名不能直接返回使用,返回的必须是一个对象。
马珊笛704
2013-12-30 · TA获得超过481个赞
知道小有建树答主
回答量:634
采纳率:100%
帮助的人:270万
展开全部
C.public A foo(B b){return b;}
正确答案。
A。不应该是void
B。不应该是int
D,不应该是returnA 。A没有定义,需要重新定义
已经在代码中测试过了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
townsin
2013-12-30 · TA获得超过452个赞
知道小有建树答主
回答量:594
采纳率:50%
帮助的人:510万
展开全部
A和B都是一样的错误,是方法的重载,不能用不同的返回值区分重载方法!
D,方法覆盖,但是return A;语句是错误的,A是定义,不是实例。
C,方法覆盖,返回的值是B类型的b,因为B类继承于A,所以b也是A的实例
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友684a311
2013-12-30 · TA获得超过105个赞
知道小有建树答主
回答量:123
采纳率:100%
帮助的人:90.3万
展开全部
~~这道题考察的是 函数重载 与重写
a,b 两项 仅仅只是返回值不同的函数 是不能重载的
d 的 返回值 return A; 这个A 根据就不是一个对象
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yingbenyang
2013-12-30 · TA获得超过129个赞
知道小有建树答主
回答量:190
采纳率:33%
帮助的人:74.2万
展开全部
传进去一个对象b,就可以返回了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
迪伦少校
2013-12-30 · TA获得超过359个赞
知道小有建树答主
回答量:272
采纳率:0%
帮助的人:152万
展开全部
继承,去看看吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式