package test;public class Test3 extends Test5 { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
            Test3 tt=new Test3();
            tt.AreTrue();
} @Override
public int isTrue() {
// TODO Auto-generated method stub
System.out.println("zilei isTrue");
return 100;

}
       
}
 abstract class Test5 {
   /*     protected   Test1(){
         System.out.println("li");
        }*/
        public  abstract int  isTrue();
        public   int  AreTrue(){
         System.out.println("julei"+this.isTrue());
         return this.isTrue();
        }
        
}    
     以上代码中,为什么Test5会在调用isTrue()时,调用子类的方法??????????
          多态中有这些么?????????

解决方案 »

  1.   

    怎么会是叫调用子类的方法呢 应该是Test3继承了Test5的方法
      

  2.   

    就是这样才体现多态 如果要调用父类方法就不要被override
      

  3.   

    注:除了不被覆盖的情况以外 static或者final类型的方法,也不进行动态绑定,
    因为编译器可以很准确的知道要调用哪个方法。
      

  4.   

    int  AreTrue()这个方法在子类中应该被重写了,
      

  5.   

    int  AreTrue()这个方法在子类中应该被重写了,