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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lostnotes 中级黑马   /  2015-3-12 21:17  /  1360 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

[code]/**
雇员示例:
        需求:公司中程序员有姓名,年龄,工号,薪水,工作内容。
                  项目经理除了有姓名,年龄,工号,薪水,还有奖金,工作内容
                  对给出内容进行数据建模
        @author lostnotes
*/
/*
分析:
        在这个问题领域中,先找出涉及的对象,
        通过名词提炼。
        程序员:
                属性:姓名,年龄,工号,薪水
                行为:工作
        经理 :
                属性:姓名,年龄,工号,薪水,奖金
                行为:工作

程序员和经理不存在直接继承关系,但是程序员和经理却是具有共性内容。
可以进行抽取,因为他们都是公司雇员,可以将程序员和经理进行抽取建立体系。
*/

class AbstractTest
{
        public static void main(String[] args)
        {
                programer p = new programer();
                p.name = "小英";
                p.age = 23;
                p.id = "0089";
                p.pay = 8000.00;
                manager m = new manager();
                m.name = "老刘";
                m.age = 45;
                m.id  = "技术部01";
                m.bonus = 500;
                m.pay = 10000.00;
        }
}

//描述雇员
abstract class Employee
{
        private String name;
        private int age;
        private String id;
        private double pay;

        Employee(String name,int age,String id,double pay)
        {
                this.name = name;
                this.age  = age;
                this.id  =  id;
                this.pay  = pay;
       
        }

        public abstract void work();

}

//描述程序员
class programer extends Employee
{
        programer (String name,int age,String id,double pay)
        {
                super(name,age,id,pay);

        }
        public void work()
        {
                System.out.println("编程");
        }
}
//描述经理
class manager extends Employee
{
        private int bonus;
        manager (String name,int age,String id,double pay)
        {
                super(name,age,id,pay);
        }
        public void work()
        {
                System.out.println("管理");
        }
}

运行不了,帮我找找哪儿出问题了

14 个回复

倒序浏览
这是正确的美女要标准点写上set  get 方法
  1. class AbstractTest
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 // programer p = new programer();
  6.                 // p.name = "小英";
  7.                 // p.age = 23;
  8.                 // p.id = "0089";
  9.                 // p.pay = 8000.00;
  10.                 // manager m = new manager();
  11.                 // m.name = "老刘";
  12.                 // m.age = 45;
  13.                 // m.id = "技术部01";
  14.                 // m.bonus = 500;
  15.                 // m.pay = 10000.00;
  16.                 //已经把成员变量进行私有化处理就不能进自行直接赋值了,
  17.                 //而且在继承中不能直接访问父类的成员变量
  18.                  programer p  = new  programer("小英",23,"0089",8000.00);
  19.         }
  20. }
复制代码
回复 使用道具 举报
1.类名要大写
2.Manager这个类的构造函数加多一个bonus的参数,然后在函数体中加一个对this.bonus的赋值
3.两个子类的构造函数已被自定义为有参构造函数,所以在创建对象new Manager(.....) 和 new Programer(....)都应直接传参就OK了。
回复 使用道具 举报
你main主方法中 new完后。下面应该写new完的对象名.方法名(传入4个对象的对应的值用逗号隔开)
回复 使用道具 举报
朋好友 发表于 2015-3-12 21:31
这是正确的美女要标准点写上set  get 方法

哦哦,最近学的东西老是还没消化就又接收新的知识,脑袋晕晕的了,太感谢你了
回复 使用道具 举报
jiangwenjun 发表于 2015-3-12 21:41
你main主方法中 new完后。下面应该写new完的对象名.方法名(传入4个对象的对应的值用逗号隔开) ...

我在看看,谢谢啊
回复 使用道具 举报
jiangwenjun 发表于 2015-3-12 21:41
你main主方法中 new完后。下面应该写new完的对象名.方法名(传入4个对象的对应的值用逗号隔开) ...

运行的时候没有提示错误了,但是为什么没有结果呢?
回复 使用道具 举报
朋好友 发表于 2015-3-12 21:31
这是正确的美女要标准点写上set  get 方法

运行是没有提示错误了,但是为什么没有结果呢?
回复 使用道具 举报
Employee(String name,int age,String id,double pay)
在抽象类中已经有了赋值的函数,直接使用他赋值啊
回复 使用道具 举报
lostnotes 发表于 2015-3-12 22:24
运行的时候没有提示错误了,但是为什么没有结果呢?

你只是 new了   后面根本没有调用方法。  输入打印代码System.out.print(传入方法)
回复 使用道具 举报
1 programer 没有实现 空构造
2 私有属性 不能访问 应公有化属性 或者抛出可供外界调用的公有方法
3 类名首字母大写
注意这些问题 就可以了
回复 使用道具 举报
你的程序员了经理的无参构造函数都被你的有参构造函数覆盖掉了,怎么还能使用无参构造函数来new对象呢?你的程序还有个问题,你的经理类没有对奖金这一属性初始化

  1.      manager (String name,int age,String id,double pay,int bonus)
  2.         {
  3.                 super(name,age,id,pay);
  4. [color=Red]tis.bonus=bonus;[/color]

  5.         }
复制代码
回复 使用道具 举报
你都没有set方法,怎么可以直接通过对象名.属性复赋值了,你的代码只能new manager(。。。。。)
回复 使用道具 举报
p.work();
调用方法,要好好理解面向对象,
方法只有被调用才会执行,
就像人玩手机一样,你只有操作它,它才会有相应的反应。
如果方法不被调用就执行的话,就没有意义了,我们程序员就是要实现对代码的控制,已达到实现功能的目的
回复 使用道具 举报
p.work();
调用方法,要好好理解面向对象,
方法只有被调用才会执行,
就像人玩手机一样,你只有操作它,它才会有相应的反应。
如果方法不被调用就执行的话,就没有意义了,我们程序员就是要实现对代码的控制,已达到实现功能的目的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马