简单做些描述“(1)在 basicclass(类名)有这样一个函数: protected abstract boolean add(object re,bolean ev);
(2)在jichengclass(类名)有这样一个函数: 
        protected  boolean add(object re,bolean ev)
              { Log.v(tag,“hello”);} (3)jichengclass和basicclass的关系是 jichengclass继承basicclas请问:比如程序运行到 basicclass里边的protected abstract boolean add(object re,bolean ev);
那是不是程序会自动地调用jichengclass里边的protected  boolean add(object re,bolean ev)函数,也就是会执行Log.v(tag,“hello”)。。如果会,为什么呢?请会的朋友帮忙回答,在此先谢谢了。
                                                                                       

解决方案 »

  1.   

    首先你建对象时肯定是: basicclass b = new jichengclass(); 吧多态虚函数什么的就不说了,碰到这种情况你只要记住abstract下来的方法是按照堆对象类型来匹配的,也就是new jichengclass(),走的是jichengclass的protected boolean add(object re,bolean ev)。而且像这种情况也不可能去执行没有函数体的abstract吧。
      

  2.   

    当然会执行子类的add方法,原因很简单,这就是面向对象的特性。当然我们也可以按常理推理出来,假设是执行父类的add方法,而父类的add方法是没有实体的,既然没有实体方法,调用它也没有任何用处,而当我们的jichengclass继承basicclass时,编译器会强制我们重写add方法,从这些气象看,所以必定是执行子类的add方法