Эта программа должна индивидуально вызывать funFact
каждого подкласса, но вместо этого она вызывает метод funFact
только из класса Mammal
. Что я делаю не так?Методы вызова суперкласса
public class MammalFacts{
public static class Mammal{
public static String funFact(){
return "If you are reading this, there's a 70% chance you're a mammal";
}//end funFact
}//end mammal
public static class Primate extends Mammal{
public static String funFact(){
return "All primates can fly";
}
}//end Primate
public static class Monkey extends Primate{
public static String funFact(){
return "Monkies will rule the earth someday";
}
}
public static void main(String[]args){
Mammal[]i = new Mammal[3];
i[0] = new Mammal();
i[1] = new Primate();
i[2] = new Monkey();
for(int c = 0; c < i.length; c++){
System.out.println(i[c].funFact());
}
}//end of main
}//end MammalFacts
Почему 'funFact()' static? –
Если вы создаете каждое животное как объект, вам не нужна функция funFact, чтобы быть статичной. – PaulHickman
. Проверьте это тоже: http://stackoverflow.com/questions/2223386/why-doesnt-java-allow-overriding -of-static-methods –