黑马程序员技术交流社区

标题: 一个关于抽象类和继承的问题 [打印本页]

作者: sunboy    时间: 2013-12-14 16:42
标题: 一个关于抽象类和继承的问题
/*
请用抽象类体现如下代码:
需求:公司中程序员有姓名,工号,薪水,工作内容。
       项目经理除了有姓名,工号,薪水,还有奖金,工作内容。
*/
//定义Worker抽象类
abstract class Worker
{
private String name;
private int number;
private int pay;
public Worker(){}
public void setName(String name)
{
  this.name = name;
}
public String getName()
{
  return name;
}
public void setNumber(int number)
{
  this.number = number;
}
public int getNumber()
{
  return number;
}
public void setPay(int pay)
{
  this.pay = pay;
}
public int getPay()
{
  return pay;
}
public abstract void show();
public abstract void work();
}
//定义程序员类
class Developer extends Worker
{
public Developer(){}
public void show()
{
  System.out.println("姓名:"+name+"工号:"+number+"薪水:"+pay);
}
public void work()
{
  System.out.println("程序员编写程序");
}
}
//定义项目经理类
class ProjectManager extends Worker
{
private int reward;
public ProjectManager(){}
public void setReward(int reward)
{
  this.reward = reward;
}
public int getReward()
{
  return reward;
}
public void show()
{
  System.out.println("项目经理:姓名:"+name+"工号:"+number+"薪水:"+pay+"奖金:"+reward);
}
public void work()
{
  System.out.println("项目经理负责管理项目开发实施");
}
}
//测试类
class WorkerTest
{
public static void main(String[] args)
{
  //程序员
  Developer dp = new Developer();
  dp.setName("王强");
  dp.setNumber(10110);
  dp.setPay(5000);
  dp.show();
  dp.work();
  //项目经理
  ProjectManager pm = new ProjectManager();
  pm.setName("刘东");
  pm.setNumber(10001);
  pm.setPay(8000);
  pm.setReward(10000);
  pm.show();
  pm.work();
}
}
我们刚学完面向对象,这是我们老师自己出的作业题。
这里父类Worker是个抽象类,它的成员变量时私有的,请问在它的子类中怎么访问这些私有成员啊?

作者: 末末    时间: 2013-12-14 17:58
这是根据你写的改的
  1. public class Demo2 {
  2.     public static void main(String[] args)
  3.     {
  4.              //程序员
  5.               Developer dp = new Developer("王强",10110,5000);
  6.               dp.work();
  7.               dp.show();
  8.               //项目经理
  9.               ProjectManager pm = new ProjectManager("刘东",10001,8000,10000);
  10.               pm.show();
  11.               pm.work();
  12.     }
  13. }

  14. abstract class Worker
  15. {
  16.         private String name;
  17.         private int number;
  18.         private int pay;
  19.        
  20.         Worker(String name,int number,int pay)
  21.         {
  22.                 this.name=name;
  23.                 this.number=number;
  24.                 this.pay=pay;
  25.         }
  26.         /**
  27.          * @return the name
  28.          */
  29.         public String getName() {
  30.                 return name;
  31.         }
  32.         /**
  33.          * @param name the name to set
  34.          */
  35.         public void setName(String name) {
  36.                 this.name = name;
  37.         }
  38.         /**
  39.          * @return the number
  40.          */
  41.         public int getNumber() {
  42.                 return number;
  43.         }
  44.         /**
  45.          * @param number the number to set
  46.          */
  47.         public void setNumber(int number) {
  48.                 this.number = number;
  49.         }
  50.         /**
  51.          * @return the pay
  52.          */
  53.         public int getPay() {
  54.                 return pay;
  55.         }
  56.         /**
  57.          * @param pay the pay to set
  58.          */
  59.         public void setPay(int pay) {
  60.                 this.pay = pay;
  61.         }
  62.        
  63.         public abstract void show();
  64.         public abstract void work();
  65. }
  66. class Developer  extends Worker
  67. {
  68.         Developer(String name,int number,int pay)
  69.         {
  70.                 super(name,number,pay);
  71.         }
  72.        
  73.         public void show()
  74.         {
  75.                 System.out.println("姓名:"+getName()+"工号:"+getNumber()+"薪水:"+getPay());
  76.         }
  77.         public void work()
  78.         {
  79.                 System.out.println("程序员编写程序");
  80.         }
  81. }

  82. class ProjectManager extends Worker
  83. {
  84.         private int reward;
  85.         ProjectManager(String name,int number,int pay,int reward)
  86.         {
  87.                 super(name,number,pay);
  88.                 this.reward=reward;
  89.         }
  90.         /**
  91.          * @return the reward
  92.          */
  93.         public int getReward() {
  94.                 return reward;
  95.         }
  96.         /**
  97.          * @param reward the reward to set
  98.          */
  99.         public void setReward(int reward) {
  100.                 this.reward = reward;
  101.         }
  102.         public void show()
  103.         {
  104.                 System.out.println("姓名:"+getName()+"工号:"+getNumber()+"薪水:"+getPay()+"奖金:"+getReward());
  105.         }
  106.         public void work()
  107.         {
  108.                 System.out.println("项目经理负责管理项目开发实施");
  109.         }
  110.        
  111. }

复制代码

作者: sunboy    时间: 2013-12-14 18:45
末末 发表于 2013-12-14 17:58
这是根据你写的改的

还是哥们聪明!不能直接访问父类的成员变量,就直接调用父类的get方法,这是个不错的解决方案!谢了!




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