A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄炳期 金牌黑马   /  2013-8-25 10:27  /  956 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 forward 于 2013-8-25 13:27 编辑

关于private的问题
纠结了好久。父类中没有私有化成员时,整个程序运行编译没问题,父类中的成员变量private后,子类怎么才能访问父类的构造函数进行初始化?麻烦知道的帮忙解答下。谢谢。

代码如下:
  1. <p>//描述雇员</p><p>abstract class Employee
  2. {
  3.   String name;//<font color="red">就是这三个成员变量加了private之后</font>
  4.   String id;
  5.   double pay;

  6. public void setName(String name)
  7. {
  8.   this.name = name;
  9. }
  10. public String getName()
  11. {
  12.   return name;
  13. }

  14. public void setId(String id)
  15. {
  16.   this.id = id;
  17. }
  18. public String getId()
  19. {
  20.   return id;
  21. }

  22. public void setPay(double pay)
  23. {
  24.   this.pay = pay;
  25. }
  26. public double getPay()
  27. {
  28.   return pay;
  29. }</p><p> Employee(String name,String id,double pay)
  30. {
  31.   this.name = name;
  32.   this.id = id;
  33.   this.pay = pay;
  34. }</p><p> public abstract void work();
  35. }</p><p>//描述程序员
  36. class Programmer extends Employee
  37. {
  38. Programmer(String name, String id,double pay)
  39. {
  40.   <font color="red">super(name,id,pay);//这里该如何修改呢?</font>
  41. }</p><p> public void work()
  42. {
  43.   System.out.println(name+"..."+id+"..."+pay);
  44.   System.out.println("code...");
  45. }
  46. }</p><p>
  47. //描述经理
  48. class Manager extends Employee
  49. {
  50. private int bonus;
  51. Manager(String name,String id,double pay,int bonus)
  52. {
  53. <font color="red"> super(name,id,pay);</font>
  54.   this.bonus = bonus;
  55. }</p><p> public void work()
  56. {
  57.   System.out.println(name+"..."+id+"..."+pay+"..."+bonus);
  58.   System.out.println("manage");
  59. }
  60. }</p><p>class  AbstractTest
  61. {
  62. public static void main(String[] args)
  63. {
  64.   Programmer p = new Programmer("张三","12030413",14500);
  65.   p.work();</p><p>  Manager m = new Manager("李四","1012030414",30000,10000);
  66.   m.work();
  67. }
  68. }
  69. </p><p> </p>
复制代码

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

7 个回复

倒序浏览
大牛们不在么。。
回复 使用道具 举报
利用get方法
  1. System.out.println(getName()+"..."+getId()+"..."+getPay());
复制代码

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报

大神没有上课啊。。
回复 使用道具 举报
薛淑凯 发表于 2013-8-25 10:57
大神没有上课啊。。

大神 你在干嘛呢
回复 使用道具 举报

谢谢你的提示。
我试了下,可以运行了。
但是super(name,id,pay);这条语句为嘛不报错呢,这3个成员变量都是私有的啊。
回复 使用道具 举报
黄炳期 发表于 2013-8-25 11:09
谢谢你的提示。
我试了下,可以运行了。
但是super(name,id,pay);这条语句为嘛不报错呢,这3个成员变量 ...

这里调用的是父类的构造函数,而你的构造函数不是private修饰的,你可以试试把父类的构造函数私有下试试看
回复 使用道具 举报
如果您的问题已经解决
请更改分类未解决为已解决
保持队形,谢谢合作

详情参考 如何修改分类
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马