对不起我的新手问题。这对我来说很奇怪,因为在java编码之前,我有一个C ++背景,其中默认情况下变量等于undefined
或null
;
所以我有abstract class
:
public abstract class Animal {
int lifeBar;
public void eat(int x) {
lifeBar += x;
}
}
我有 Bird class
扩展了它:
public class Bird extends Animal {
}
Main class
:
public class Main {
public static void main(String[] args) {
Animal bird = new Bird();
bird.eat(10);
System.out.println("bird: " + bird.lifeBar);
}
}
我认为应该有编译错误,因为我没有声明lifeBar
变量,但控制台显示我 10 。这是为什么?是因为有一些默认的构造函数吗?
答案 0 :(得分:2)
Bird extends Animal
所有方法和时
变量在Bird
类中继承。lifeBar
是int
类型的实例变量,因此其默认值为0
lifeBar += x;
语句将值增加10
的方法,因为你将10
作为参数传递给方法。答案 1 :(得分:1)