【发布时间】:2015-12-06 05:33:42
【问题描述】:
假设我有这些课程:
public class Animal {
static int counter = 0;
public Animal() {
counter += 1;
System.out.println("Animals counter is currently " + counter);
}
public class Cat extends Animal {
static int counter1 = 0;
public Cat() {
counter1 += 1;
System.out.println("Cats counter is currently " + counter1);
}
public class Main {
public static void main(String[] args) {
Cat Cat1 = new Cat();
Animal Animal1 = new Animal();
Cat Cat2 = new Cat();
}
}
当我运行 Main 时,我得到以下输出:
Animals counter is currently 1
Cats counter is currently 1
Animals counter is currently 2
Animals counter is currently 3
Cats counter is currently 2
所以每当我创建一个 Cat 实例时,它也会增加 Animal 计数器。我想弄清楚为什么会发生这种情况。显然,每次创建 Cat 时,Animal 的构造函数都会运行,但为什么呢?
【问题讨论】:
标签: java oop inheritance