abstract class Animal {
private static int count;
public static void increment() { count++; }
public static int getCount() { return count; }
abstract void noise();
}
class Dog extends Animal {
public Dog() {};
public void noise() {
System.out.println("Woof");
increment();
}
}
class Cat extends Animal {
public Cat() {};
public void noise() {
System.out.println("Meow");
increment();
}
}
public class Counter{
public static void main(String[] args) {
Animal[] a = {new Dog(), new Cat(), new Cat(), new Dog(), new Dog()};
for (int i = 0; i < a.length; i++)
a[i].noise();
System.out.println(Dog.getCount() + " woofs and " + Cat.getCount() + " meow");
}
}
なんかおかしいところありますか?