1】Fu f = new Zi(); ,这个你没有错,确实是把Zi提升了,看左边的是Fu,而你创建出来的是Zi,Zi到Fu确实是一个提升的过程这才是多态的体现形式。
f.run1(); //首先说一下结果。是Zi run -1,这是因为多态有一个覆盖的特性,子类继承父类,如果子类重新把父类继承给它的重新定义,那么子类就覆盖了父类,所以是Zi run-1
f.run2(); //这个结果是fu run-2,你的子类继承父类,但是你的子类有没有重新定义覆盖run2这个方法,所以运行的必然是f run-2 再给你说一下,和run1一样,如果这里子类也重新定义覆盖了父类,那结果就是Zi run-2了
f.run3();//这个结果是无法编译,这里是Zi继承父,就是父类有的全给了子类,但是父类又没有继承子类,就是说,父类的东西,都会给子类,而子类有的却不会给父亲,这里就是Zi具备run3()这个功能,但是Fu只有run1 和run2 根本就没有run3 ,不能无中生有的调用它没有的功能
|