黑马程序员技术交流社区

标题: 程序不走构造方法,为啥 [打印本页]

作者: ┣┫流枫    时间: 2014-8-9 22:10
标题: 程序不走构造方法,为啥
本帖最后由 ┣┫流枫 于 2014-8-9 22:22 编辑

  1. class Penguin {
  2.         private String name=null; // 名字
  3.         private int health=0; // 健康值
  4.         private String sex=null; // 性别
  5.         public void Penguin() {
  6.                 health = 10;
  7.                 sex = "雄";
  8.                 System.out.println("执行构造方法。");
  9.         }
  10.         public void print() {
  11.                 System.out.println("企鹅的名字是" + name +
  12.                                 ",健康值是" + health + ",性别是" + sex+ "。");
  13.         }
  14.         public static void main(String[] args) {
  15.                 Penguin pgn = new Penguin();
  16.                 pgn.print();
  17.         }        
  18. }
复制代码

输出结果:
企鹅的名字是null,健康值是0,性别是null

问题是为什么不走构造方法那




作者: 扛把子    时间: 2014-8-9 22:12
:)构造方法是没有返回值的,void删掉
作者: fxwb2005    时间: 2014-8-9 22:13
……构造方法没返回值,你这样写会默认是一个普通方法……
作者: 晋一峰    时间: 2014-8-9 22:15
public void Penguin  你这加了返回值类型 就不是构造方法啦!
作者: ┣┫流枫    时间: 2014-8-9 22:15
扛把子 发表于 2014-8-9 22:12
构造方法是没有返回值的,void删掉

额   也就是说那只是一个和类名相同的  一般方法,不是构造方法啊
作者: Bule丶    时间: 2014-8-9 22:20
嗯嗯,是的,有返回值的就是方法,无返回值的才是构造函数
作者: 渴望学习    时间: 2014-8-9 22:39
路过~~~~
作者: rolling-stone    时间: 2014-8-9 22:44
吧你构造函数的void去掉
作者: 侯岩卿    时间: 2014-8-9 22:44
你这个不是构造函数啊!构造函数是没有返回值类型的!这个只是个普通的成员函数!没有被调用当然不会被执行!
作者: shuimu_88    时间: 2014-8-9 23:37
没有定义构造方法,调用的是默认的构造方法,默认的构造方法是空函数哦。
作者: 冷锋也温柔    时间: 2014-8-9 23:46
没有构造方法呀  构造方法格式是这样的
       class Penguin {
        private String name=null; // 名字
        private int health=0; // 健康值
        private String sex=null; // 性别
       public  Penguin() {
                health = 10;
                sex = "雄";                                                   这时候
Penguin()是构造方法,要把void去掉的
                System.out.println("执行构造方法。");
        }

        public void print() {
                System.out.println("企鹅的名字是" + name +
                                ",健康值是" + health + ",性别是" + sex+ "。");
        }
        public static void main(String[] args) {
                Penguin pgn = new Penguin();
                pgn.print();
        }        
}
作者: 烟海    时间: 2014-8-9 23:57
楼主:
      貌似楼主是0715班的?这一题是当时没明白?还是故意来问题刷分来了?

     这题刚刚有编译分析了一下,这边确实是没有执行那个函数,因为楼主也都说了,有void类型,不是构造函数,所以不会执行。。。

     然后我又特地测试了一下,把void去掉。。。。这时候是空参的构造函数了。。这时候执行了这个空参的构造函数。
    输入的结果:       执行构造方法。
                                企鹅的名字是null,健康值是10,性别是雄。

    这地方,空参的构造函数执行了。就没问题了、刚刚看错了以为又多了一个问题呢。。没问题了,就这样解释的。。

作者: inception    时间: 2014-8-10 00:10
看看。。。。。。。
作者: /aiq玩完?/aiq    时间: 2014-8-10 00:12
你那个没有构造函数,构造函数没有返回值。public Penguin() {}
作者: qingxi1    时间: 2014-8-10 00:18
它并不是构造方法
作者: M单色调    时间: 2014-8-10 01:44
构造函数无返回值,空的也不行!
作者: 编程学徙    时间: 2014-8-10 13:42
是不是应该连public也去掉……
Class Pengiun
{
        Pengiun()





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