调用超类的方法

Flu*_*fle 1 java subclass superclass

该程序应该单独调用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
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 6

funFact是静态的.覆盖不适用于静态方法.

static从所有方法中删除关键字(正如您通过实例引用调用它们),它将按预期工作.