黑马程序员技术交流社区
标题: 发到基础题帮忙分析下 [打印本页]
作者: wxy19891017 时间: 2015-6-9 23:03
标题: 发到基础题帮忙分析下
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();
}
}
结果是多少
作者: 王超群 时间: 2015-6-9 23:03
null 0 null 因为构造函数前面加了返回值类型所以不执行
作者: 君子无醉 时间: 2015-6-11 01:32
并不是不执行,而是你没有调用你自己设定的赋值方法。 楼上哥们说的不太严谨...你写的这个赋值方法,因为有返回值语句,所以并不算是构造方法,所以等于你并没有自己定义构造方法, 所以系统会默认创建一个无参构造,你的new语句后面就是调用的这个无参构造,是一个空语句 什么都不执行,所以会输出变量的初始赋值null,0,null。。。你如果想启用这个方法的话,要么把你写的那个类似构造方法的声明中void去掉,或者在调用print()语句前写,pgn.Penguin()。。
作者: lucien_he 时间: 2015-6-13 23:23
围观学习下
作者: 天涯回望 时间: 2015-6-15 22:48
null -0-null 构造函数是没有返回值,也没有返回值类型的,Penguin这个方法就没有调用,我觉得这应该是出题的人故意放出的一个烟雾弹
作者: zlsucceed 时间: 2015-6-16 10:51
看下学习气氛很是好的啊
作者: leiyong 时间: 2015-6-17 16:49
null -0-null 构造函数没有返回值,所以第一个不是构造函数,在main方法中值调用了print方法所以输出结果应该是:"企鹅的名字是" null
",健康值是" +0+ ",性别是" + sex+ "null。"
作者: anoofeng 时间: 2015-6-18 09:10
调用了系统默认的空参构造函数,什么都没做,所以成员变量只有开始的默认值。
private String name=null; // 名字
private int health=0; // 健康值
private String sex=null; // 性别
作者: 图图_黑马 时间: 2015-6-23 15:00
楼上很多正解!其实你没有自定义的构造函数,程序会自动调用从Object类继承而来的构造函数:
public Penguin() {super(); }
而你自己写的不是构造函数,构造函数与其他函数的区别就是不带返回值类型。
public void Penguin() {
health = 10;
sex = "雄";
System.out.println("执行构造方法。");
}
但是如果你有调用pgn.Penguin()结果就又不一样了。
作者: 成佳裕 时间: 2015-7-4 21:14
那不是构造方法
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |