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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wxy19891017 中级黑马   /  2015-6-9 23:03  /  3596 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

30黑马币
class Penguin {
    private String name=null; // 名字
    private int health=0; // 健康值
    private String sex=null; // 性别
    public void Penguin() {
          health = 10;
          sex = "雄";
          System.out.println("执行构造方法。");
    }
    public void print() {
          System.out.println("企鹅的名字是" + name +
                     ",健康值是" + health + ",性别是" + sex+ "。");
    }
    public static voidmain(String[] args) {
          Penguin pgn = newPenguin();
          pgn.print();
    }
}
结果是多少

最佳答案

查看完整内容

null 0 null 因为构造函数前面加了返回值类型所以不执行

9 个回复

倒序浏览
null  0  null 因为构造函数前面加了返回值类型所以不执行
回复 使用道具 举报
君子无醉 来自手机 中级黑马 2015-6-11 01:32:50
藤椅
并不是不执行,而是你没有调用你自己设定的赋值方法。 楼上哥们说的不太严谨...你写的这个赋值方法,因为有返回值语句,所以并不算是构造方法,所以等于你并没有自己定义构造方法,  所以系统会默认创建一个无参构造,你的new语句后面就是调用的这个无参构造,是一个空语句 什么都不执行,所以会输出变量的初始赋值null,0,null。。。你如果想启用这个方法的话,要么把你写的那个类似构造方法的声明中void去掉,或者在调用print()语句前写,pgn.Penguin()。。
回复 使用道具 举报
围观学习下
回复 使用道具 举报
null -0-null  构造函数是没有返回值,也没有返回值类型的,Penguin这个方法就没有调用,我觉得这应该是出题的人故意放出的一个烟雾弹
回复 使用道具 举报
看下学习气氛很是好的啊
回复 使用道具 举报
null -0-null 构造函数没有返回值,所以第一个不是构造函数,在main方法中值调用了print方法所以输出结果应该是:"企鹅的名字是" null
                     ",健康值是" +0+ ",性别是" + sex+ "null。"
回复 使用道具 举报
调用了系统默认的空参构造函数,什么都没做,所以成员变量只有开始的默认值。
    private String name=null; // 名字
    private int health=0; // 健康值
    private String sex=null; // 性别
回复 使用道具 举报
楼上很多正解!其实你没有自定义的构造函数,程序会自动调用从Object类继承而来的构造函数:
public Penguin() {super();   }

而你自己写的不是构造函数,构造函数与其他函数的区别就是不带返回值类型。
public void Penguin() {
          health = 10;
          sex = "雄";
          System.out.println("执行构造方法。");
    }

但是如果你有调用pgn.Penguin()结果就又不一样了。
回复 使用道具 举报
那不是构造方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马