黑马程序员技术交流社区

标题: 抽象类练习中private的问题 [打印本页]

作者: 黄炳期    时间: 2013-8-25 10:27
标题: 抽象类练习中private的问题
本帖最后由 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>
复制代码

作者: 黄炳期    时间: 2013-8-25 10:42
大牛们不在么。。

作者: 薛鹏鹏    时间: 2013-8-25 10:53
利用get方法
  1. System.out.println(getName()+"..."+getId()+"..."+getPay());
复制代码

作者: 薛淑凯    时间: 2013-8-25 10:57
薛鹏鹏 发表于 2013-8-25 10:53
利用get方法

大神没有上课啊。。

作者: 薛鹏鹏    时间: 2013-8-25 11:03
薛淑凯 发表于 2013-8-25 10:57
大神没有上课啊。。

大神 你在干嘛呢

作者: 黄炳期    时间: 2013-8-25 11:09
薛鹏鹏 发表于 2013-8-25 10:53
利用get方法

谢谢你的提示。
我试了下,可以运行了。
但是super(name,id,pay);这条语句为嘛不报错呢,这3个成员变量都是私有的啊。

作者: 薛鹏鹏    时间: 2013-8-25 11:13
黄炳期 发表于 2013-8-25 11:09
谢谢你的提示。
我试了下,可以运行了。
但是super(name,id,pay);这条语句为嘛不报错呢,这3个成员变量 ...

这里调用的是父类的构造函数,而你的构造函数不是private修饰的,你可以试试把父类的构造函数私有下试试看

作者: 薛鹏鹏    时间: 2013-8-25 11:13
如果您的问题已经解决
请更改分类未解决为已解决
保持队形,谢谢合作

详情参考 如何修改分类





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2