快来看看这道题的答案有没有争议!!!!我认为是不会有错误出现!!

wulingdongliu 2002-12-28 08:20:29
Given the following code:
1) class Parent {
2) private String name;
3) public Parent(){}
4) }
5) public class Child extends Parent {
6) private String department;
7) public Child() {}
8) public String getValue(){ return name; }
9) public static void main(String arg[]) {
10) Parent p = new Parent();
11) }
12) }
Which line will cause error?

A. line 3
B. line 6
C. line 7
D. line 8
E.line 10


答案是D
...全文
24 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaofenguser 2002-12-29
  • 打赏
  • 举报
回复
继承方法:
基数中的构造函数永远不能被继承,不管它们属性如何.
在派生类对象中拥有所有的基类成员,只是有一些成员不能用你在派生类中定义的方法进行访问期间.
基类的被继承成员在派生类内是可被访问的那一部分,如果基类中的成员在派生类中不可访问,则它就不是派生类的被继承成员,但是不是被继承成员的基类成员仍然作为派生类对象的一部分[摘自java入门经典]
rebell 2002-12-29
  • 打赏
  • 举报
回复
调用应该是可以的,问题是,你的name没有赋值却要返回一个值有问题。
如果预先有个默认值应该不会有问题,实际编程中常遇到此问题。
mengz 2002-12-28
  • 打赏
  • 举报
回复
回复人: wulingdongliu(物领冬留)
可是,第七行的Child构造器调用了父类的无参数构造器,所以它就应该拥有name这个变量了啊。对不对???
--------------------------------------

对啊,p拥有name变量是不假,但你试图在Child类中调用它,当然是不行了.
xiaofenguser 2002-12-28
  • 打赏
  • 举报
回复
派生类调用基类的构造函数的方法是super(..)
xiaofenguser 2002-12-28
  • 打赏
  • 举报
回复
Chile构造器构造的是自身,不是它的父类!Chile类没有继承name这个变量,所以不拥有name变量.
wulingdongliu 2002-12-28
  • 打赏
  • 举报
回复
可是,第七行的Child构造器调用了父类的无参数构造器,所以它就应该拥有name这个变量了啊。对不对???
xiaofenguser 2002-12-28
  • 打赏
  • 举报
回复
private 不能被继承,就是D

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧