在main函数里,创建对象后,如果先调用方法然后调用属性,输出的属性值为空,为什么?

来源:9-1 Java 中的继承

cherry815

2016-08-24 14:58

Animal 类:

public class Animal {
    
    public int age;
    public String  name;
    public void eat(){
        System.out.println(name+":"+age);
        System.out.println("animal can eat food");
    }

}


Dog 类(继承Animal类):

public class Dog extends Animal {

}

入口类Main 函数:

public class TestAnimal {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Dog dog = new Dog();
        dog.eat();
        dog.name="beibie";
        dog.age=2;
    }

}

输出结果:null:0
animal can eat food


如果把dog.eat();移到dog.age=2;的下面,输出结果:

beibie:2
animal can eat food

写回答 关注

2回答

  • 戏如人生3219730
    2016-08-24 15:16:38
    已采纳

    代码是从上往下执行。

    输出null:0;因为调用eat()时候,变量name和age还没赋值;

    如果把dog.eat();移到dog.age=2;的下面,当执行eat()的时候,name和age则已经被赋值了。

    cherry...

    非常感谢,懂了,多谢指教

    2016-08-31 10:44:50

    共 1 条回复 >

  • 甩甩头吥洅笏伱
    2016-08-24 15:35:13

    可以使用构造方法对像进行初始化,给其赋值


Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530653 学习 · 6091 问题

查看课程

相似问题