class A

   void a1(){....}
   void a2(){}
}
class B extends A
{
   void b(){}
   static void b2(){ new B().a1()  }
}new B().a1() 到底是个怎样的调用过程
在类B中是不是已经有了a1(),a2()到底属于谁

解决方案 »

  1.   

    类B继承了类A中的方法a1()和a2(),newB().a1()调用的是类B的a1,由于你没有重载方法a1,所以newB().a1()起的作用和类A中的a1是一样的
      

  2.   

    由于B继承了A,所以A中所有定义的变量在B中都可以直接调用,也就是说B中有同样的功能。也就是说a1(),a2()在属于A的同时可以随时被B调用的!!
      

  3.   

    B类继承了A类的所有方法(包括private的方法,只是这个不能使用),所以你的B类确实是有a1和a2两个方法的,new B().a1()调用的是B类继承来的方法,因为你没有重载(其实应该说是复写,重载不是这样的),所以你调用后的结果跟A类的对象调用a1方法的效果是一样。
      

  4.   

    继承时,方法调用过程1。在本类中寻找
    2。在本类的父类中寻找
    3。在更上一层中寻找
    。。
    直到找到Oject中还没有找到的化就会抛出异常
      

  5.   

    只有public才完全的直接的B从A中来调用!!
      

  6.   

    却是你在A类的方法前面没有申明访问权限,所以就默认是包访问的(package),但是你的AB类并没有在同一个包里面,所以B类不能访问A类继承的方法,不过A类的方法却是继承来了,只是B类没有权限使用。