黑马程序员技术交流社区
标题: 大神帮解释!! [打印本页]
作者: zhenfei 时间: 2014-7-28 20:52
标题: 大神帮解释!!
classPenguin {
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 void main(String[] args) {
Penguin pgn = new Penguin();
pgn.print();
}
}
这是我们今天的小测试 我编译的结果是:企鹅的名字是null,健康值是0,性别是null。 他为什么不输出“执行构造方法”呢?不是说子类构造器里面默认有super 吗!!
作者: star5603 时间: 2014-7-28 21:44
classPenguin这两个你有没有写错?
作者: 江苏孙浩 时间: 2014-7-28 21:51
本帖最后由 江苏孙浩 于 2014-7-28 21:53 编辑
构造函数: public void Penguin() -- 把void去掉;构造函数没有返回类型的
貌似也没有对name进行初始化
作者: 洛漠O_o 时间: 2014-7-28 22:06
本帖最后由 洛漠O_o 于 2014-7-28 22:22 编辑
- class Penguin {
- private String name=null; // 名字
- private int health=0; // 健康值
- private String sex=null; // 性别
- //这个是一个方法,不是类的构造方法。类的无参构造方法是public Penguin(){},但是默认的是有这个。
- //Penguin pgn = new Penguin();这句你能new出来,就是说是有默认构造方法的
- public void Penguin() {
- health = 10;
- sex = "雄";
- System.out.println("执行构造方法。");
- }
- public void print() {
- System.out.println("企鹅的名字是" + name +
- ",健康值是" + health + ",性别是" + sex+ "。");
- }
- public static void main(String[] args) {
- Penguin pgn = new Penguin();
- pgn.print();
- //-------------------------------
- System.out.println("-----让health、sex有值。因为你没给name赋值所以name还为空--------");
- pgn.Penguin();
- pgn.print();
- }
- }
复制代码 编译结果:
企鹅的名字是null,健康值是0,性别是null。
-----让health、sex有值。因为你没给name赋值所以name还为空--------
执行构造方法。
企鹅的名字是null,健康值是10,性别是雄。
作者: 花花公子 时间: 2014-7-28 22:09
类是不带小括号的吧
作者: 花花公子 时间: 2014-7-28 22:13
本帖最后由 花花公子 于 2014-7-28 22:15 编辑
public void Penguin() {
health = 10;
sex = "雄";
System.out.println("执行构造方法。");
这个不是构造函数吧。这算是一个方法。
- Penguin(String name,int health,String sex)
- {
- this.name=name;
- this.sex=sex;
- this.health=health;
- }
复制代码 主函数中new对象的时候把参数写进去。
作者: 洛漠O_o 时间: 2014-7-28 22:21
类的构造方法……呵呵,写错了。。。。qiu了
作者: 青偆丶易逝〃 时间: 2014-7-28 22:40
你的构造函数带了返回值类型, 所以程序运行的是默认的构造函数,所以没有打印System.out.println("执行构造方法。");
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |