黑马程序员技术交流社区

标题: 如何在子类中打印父类的成员变量 [打印本页]

作者: 半夜雨半夜雨    时间: 2013-11-7 13:34
标题: 如何在子类中打印父类的成员变量
本帖最后由 半夜雨半夜雨 于 2013-11-7 14:04 编辑
  1. abstract class Employee
  2. {
  3. private String name;

  4. private String id;

  5. private double pay;

  6. Employee(String name,String id,double pay)
  7. {
  8. this.name=name;
  9. this.id=id;
  10. this.pay=pay;

  11. }
  12. public abstract void work();


  13. }
  14. class Manager extends Employee
  15. {
  16. private int bouns;
  17. Manager(String name,String id,double pay,int bouns)
  18. {
  19. super(name,id,pay);
  20. this.bouns=bouns;
  21. }
  22. public void work(){
  23. System.out.println("name="+" "+"id="+" "+"pay="+" "+"bouns=");
  24. }
  25. }
  26. class Pro extends Employee
  27. {

  28. Pro(String name,String id,double pay)
  29. {
  30. super(name,id,pay);

  31. }
  32. public void work(){
  33. System.out.println("employee work");
  34. }
  35. }


  36. public class AllEmployee {
  37. public static void main(String args[])

  38. {

  39. Manager m=new Manager("zhangsan","2012",2010,120);
  40. m.work();

  41. }
  42. }
复制代码
如上代码怎么在System.out.println("name="+" "+"id="+" "+"pay="+" "+"bouns=");这一行中打印相应的成员变量,难道非要在让父类的变量用protected或public定义?
作者: 魏-玉-彪    时间: 2013-11-7 13:57

  1. abstract class Employee {
  2.         private String name;                 //方案1 将抽象类中的私有变量公有 ,不建议

  3.         private String id;                          //public String id......;

  4.         private double pay;

  5.         Employee(String name, String id, double pay) {
  6.                 this.name = name;
  7.                 this.id = id;
  8.                 this.pay = pay;

  9.         }
  10.         String getName(){   
  11.                 return name;
  12.         }
  13.   //   方案二 第一步定义一个方法,可以让子类或外部对象对过此方法拿到本类中的私有变量,
  14. //建议此方法

  15.         String getId(){
  16.                 return id;
  17.         }
  18.         double getPay(){
  19.                 return pay;
  20.         }
  21.         
  22.         

  23.         public abstract void work();

  24. }

  25. class Manager extends Employee {
  26.         private int bouns;

  27.         Manager(String name, String id, double pay, int bouns) {
  28.                 super(name, id, pay);
  29.                 this.bouns = bouns;
  30.         }

  31.         public void work() {
  32.                 System.out.println("name=" +getName()+" " + "id=" + getId()+" " + "pay=" +getPay()+" "
  33.                                 + "bouns="+bouns);
  34. //方案二第二步,在此调用get方法
  35.         }
  36. }

  37. class Pro extends Employee {

  38.         Pro(String name, String id, double pay) {
  39.                 super(name, id, pay);

  40.         }

  41.         public void work() {
  42.                 System.out.println("employee work");
  43.         }
  44. }

  45. public class AllEmployee {
  46.         public static void main(String args[])

  47.         {

  48.                 Manager m = new Manager("zhangsan", "2012", 2010, 120);
  49.                 m.work();

  50.         }
  51. }

复制代码
/*
如上代码怎么在System.out.println("name="+" "+"id="+" "+"pay="+" "+"bouns=");这一行中打印相应的成员变量
方案1 将抽象类中的私有变量公有 ,不建议方案
方案2 定义一个getxx方法,可以让子类或外部对象对过此get方法拿到本类中的私有变量
,

*/

作者: ~﹏~    时间: 2013-11-7 14:00
像上楼说的
方案1 将抽象类中的私有变量变为protected
方案2 定义一个getXX方法,可以让子类或外部对象对过此get方法拿到本类中的私有变量,
作者: 半夜雨半夜雨    时间: 2013-11-7 14:04
魏-玉-彪 发表于 2013-11-7 13:57
/*
如上代码怎么在System.out.println("name="+" "+"id="+" "+"pay="+" "+"bouns=");这一行中打印相应的成 ...

记起来了,谢了,哥们,最近整天看视频都混乱了,




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