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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘佳 中级黑马   /  2012-8-7 19:36  /  1919 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘佳 于 2012-8-7 19:58 编辑
  1. class Employee
  2. {
  3.         private String name;
  4.         private String id;
  5.         private double pay;
  6. //在构造函数中进行初始化。为什么要在构造函数中进行初始化,一般有哪些初始化方式,都如何选择?
  7.         Employee(String name,String id,double pay)
  8.         {
  9.                 this.name = name;
  10.                 this.id = id;
  11.                 this.pay = pay;
  12.         }
  13.         
  14.         public abstract void work();

  15. }

  16. class Manager extends Employee
  17. {
  18.         private int bonus;    //奖金不应该是double类型的吗?
  19.         Manager(String name,String id,double pay,int bonus)
  20.         {
  21.                 super(name,id,pay);
  22.                 this.bonus = bonus;
  23.         }
  24.        /*
  25.         方法体一定要在构造函数之外吗,能否定义在构造函数里面呢,
  26.         各有何含义呢?
  27.         */
  28.         public void work()
  29.         {
  30.                 System.out.println("manager work");
  31.         }
  32. }

  33. class Pro extends Employee
  34. {
  35.         /*
  36.         父类已经初始化过了,为何这里的构造函数还要再进行初始化?
  37.         为何这里不能写成空参数的呢,而一定需要标识符呢,
  38.         它继承上面的函数,不是直接可以将上面的函数拿过来用吗?
  39.         */
  40.         Pro(String name,String id,double pay)
  41.         {
  42.                 super(name,id,pay);
  43.         }
  44.         public void work()
  45.         {
  46.                 System.out.println("pro work");
  47.         }
  48. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
包晗 + 1

查看全部评分

2 个回复

倒序浏览
//在构造函数中进行初始化。为什么要在构造函数中进行初始化,一般有哪些初始化方式,都如何选择?
还能通过定义setXX的方法来赋值,不过大家都是在构造方法中初始化的,那样简单方便,最重要的就是大家都这样搞,我们也跟着大众这样搞

//奖金不应该是double类型的吗?
这里只是一个模拟,也可以是int,不必太纠结这个

方法体一定要在构造函数之外吗,能否定义在构造函数里面呢,各有何含义呢?
不太明白你这句的意思,一般都是写在构造方法里面的,当然还有一种是写在构造方法外面,叫做构造代码块,用{ }括起来的
并且构造代码块,在new对象的时候,比构造方法先执行

父类已经初始化过了,为何这里的构造函数还要再进行初始化?
为何这里不能写成空参数的呢,而一定需要标识符呢,
它继承上面的函数,不是直接可以将上面的函数拿过来用吗?

这里是子类的构造方法,如果写成空参数的话,那怎么初始化子类对象呢?子类继承父类,但不继承父类的构造方法。
而且这里只是把从父类继承来的3个参数,交给父类的构造方法初始化

说的有点乱,希望可以帮到你,面向对象的概念挺多的,慢慢理解吧

回复 使用道具 举报
余明辉 发表于 2012-8-7 20:14
//在构造函数中进行初始化。为什么要在构造函数中进行初始化,一般有哪些初始化方式,都如何选择?
还能通 ...

1. 如果下面代码中有setXX的方法来赋值,那么上面的构造方法中还需要那样进行初始化吗?
2. Pro(String name,String id,double pay)
        {
                super(name, id, pay);
        }
        public void work()
        {
                System.out.println("pro work");
        }
与以下代码的区别
Pro(String name,String id,double pay)
        {
                super(name, id, pay);
       
                public void work()
                {
                        System.out.println("pro work");
                }
        }

3. 虽然是空参数的构造函数,但子类默认第一句有一行隐式super语句,这个不就是进行初始化的吗?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马