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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wjj410830911 中级黑马   /  2013-11-9 14:49  /  1634 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

雇员(Employee)示例:
需求:公司中程序员(programmer)有姓名(name),工号(id),薪水(pay),工作内容(work)。
项目经理(Manager)除了有姓名(name),工号(id),薪水(pay),还有奖金(bonus),工作内容(work)。
对给出需求进行数据建模。
  1. class Test {
  2.         public static void main(String[] args){
  3.                 programmer p = new programmer("吴佳峻","85747",11573.27);
  4.                         p.work();
  5.                 Manager m = new Manager("吴佳峻","85747",11573.27,20000);
  6.                         m.work();
  7.         }
  8. }

  9. abstract class Employee {
  10.         private String name;
  11.         private String id;
  12.         private double pay;

  13.         public  Employee(){}
  14.         public  Employee(String name,String id,double pay){

  15.         }

  16.         public String getName(){
  17.                 return this.name;
  18.         }
  19.         public String getId(){
  20.                 return this.id;
  21.         }
  22.         public double getPay(){
  23.                 return this.pay;
  24.         }

  25.         public abstract void work();
  26. }

  27. class programmer extends Employee {
  28.         public programmer(){}

  29.         public programmer(String name,String id,double pay){
  30.                 super(name,id,pay);
  31.         }
  32.         public void work(){
  33.                 System.out.println("程序员的名字叫" + getName() +"工号:" + getId() +"薪水是"+ getPay() + "每天就是打代码");
  34.         }
  35. }
  36. class Manager extends Employee {
  37.         private int bonus;
  38.         public Manager(){}

  39.         public Manager(String name,String id,double pay,int bonus){
  40.                 super(name,id,pay);
  41.                 this.bonus = bonus;
  42.         }
  43.         public void work(){
  44.                 System.out.println("项目经理的名字叫" + getName() +"工号:" + getId() +"薪水是"+ getPay() +"奖金是"+ bonus + "每天就是打代码");
  45.         }
  46. }
复制代码
题目如上
  为什么我的代码,打印出来都是null呢?我明明赋值了啊  也没有报错  到底哪步错了啊

评分

参与人数 1技术分 +1 收起 理由
To + 1 新人鼓励

查看全部评分

8 个回复

倒序浏览
查了半天也没找到问题  求学长们  帮帮我啊
回复 使用道具 举报
  1. class Test  {
  2.         public static void main(String[] args){
  3.                 programmer p = new programmer("吴佳峻","85747",11573.27);
  4.                         p.work();
  5.                 Manager m = new Manager("吴佳峻","85747",11573.27,20000);
  6.                         m.work();
  7.         }
  8. }

  9. abstract class Employee {
  10.         private String name;
  11.         private String id;
  12.         private double pay;

  13.         public  Employee(){}
  14.         public  Employee(String name,String id,double pay){
  15.                         this.name = name;   //这个地方你忘了传值
  16.                         this.id = id;
  17.                         this.pay = pay;

  18.         }

  19.         public String getName(){
  20.                 return this.name;
  21.         }
  22.         public String getId(){
  23.                 return this.id;
  24.         }
  25.         public double getPay(){
  26.                 return this.pay;
  27.         }

  28.         public abstract void work();
  29. }

  30. class programmer extends Employee {
  31.         public programmer(){}

  32.         public programmer(String name,String id,double pay){
  33.                 super(name,id,pay);
  34.         }
  35.         public void work(){
  36.                 System.out.println("程序员的名字叫" + getName() +"工号:" + getId() +"薪水是"+ getPay() + "每天就是打代码");
  37.         }
  38. }
  39. class Manager extends Employee {
  40.         private int bonus;
  41.         public Manager(){}

  42.         public Manager(String name,String id,double pay,int bonus){
  43.                 super(name,id,pay);
  44.                 this.bonus = bonus;
  45.         }
  46.         public void work(){
  47.                 System.out.println("项目经理的名字叫" + getName() +"工号:" + getId() +"薪水是"+ getPay() +"奖金是"+ bonus + "每天就是打代码");
  48.         }
  49. }
复制代码
回复 使用道具 举报
class Test
{
        public static void main(String[] args)
        {
                programmer p = new programmer("吴佳峻","85747",11573.27);
                        p.work();
                Manager m = new Manager("吴佳峻","85747",11573.27,20000);
                        m.work();
        }
}

abstract class Employee
{
        private String name;
        private String id;
        private double pay;

        public  Employee(){}
        //没写赋值语句,当然返回为null。
        public  Employee(String name,String id,double pay)
        {
                        this.name = name;
                        this.id = id;
                        this.pay = pay;

        }

        public String getName()
        {
                return this.name;
        }
        public String getId()
        {
                return this.id;
        }
        public double getPay(){
                return this.pay;
        }

        public abstract void work();
}

class programmer extends Employee {
        public programmer(){}

        public programmer(String name,String id,double pay){
                super(name,id,pay);
        }
        public void work(){
                System.out.println("程序员的名字叫" + getName() +"工号:" + getId() +"薪水是"+ getPay() + "每天就是打代码");
        }
}
class Manager extends Employee {
        private int bonus;
        public Manager(){}

        public Manager(String name,String id,double pay,int bonus){
                super(name,id,pay);
                this.bonus = bonus;
        }
        public void work(){
                System.out.println("项目经理的名字叫" + getName() +"工号:" + getId() +"薪水是"+ getPay() +"奖金是"+ bonus + "每天就是打代码");
        }
}

回复 使用道具 举报
啊   谢谢。。。找了半天 原来在这。。。=, =
回复 使用道具 举报

啊  谢谢  原来弄了半天问题在这
回复 使用道具 举报
   public Employee(String name, String id, double pay) {
                        // TODO Auto-generated constructor stub
                //你这样写就可以了。没有赋值,看来我的速度还是慢了啊!!!!
               
                this.name=name;
                this.id=id;
            this.pay=pay;
                }
回复 使用道具 举报
zdrain 中级黑马 2013-11-9 16:54:45
8#
父类带参数构造函数没赋值

public  Employee(String name,String id,double pay)
         {
                         this.name = name;
                         this.id = id;
                         this.pay = pay;

        }
回复 使用道具 举报
在17行加上
this.name = name;
this.id = id;
this.pay = pay;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马