Java 分派和重新定义

Java 分派和重新定义,java,dispatch,Java,Dispatch,我有两个library(ClassA和ClassB)类和一个runner类。现在我有一个库类(ClassAUpdate)的更新,它会导致我当前的runner类出现问题 我认为问题之一是,由于重新修补,这将有一个无限递归。但还有两个问题我找不到。也许重新定义 我如何只对runner类进行更改,以使其运行而不出现这些问题?也许在runner类中有一个新类,它将ClassB作为组件 A类: abstract class LibClassA { public int m1( int param

我有两个library(ClassA和ClassB)类和一个runner类。现在我有一个库类(ClassAUpdate)的更新,它会导致我当前的runner类出现问题

我认为问题之一是,由于重新修补,这将有一个无限递归。但还有两个问题我找不到。也许重新定义

我如何只对runner类进行更改,以使其运行而不出现这些问题?也许在runner类中有一个新类,它将ClassB作为组件

A类:

abstract class LibClassA
{
    public int m1( int param )
   {
      return m5( param / 2 );
   }

   public int m2( int param )
   {
      return param + 45;
   }

   abstract public int m3( int param );

   public int m5( int param )
   {
      return param * 6;
   }
}
B类:

class LibClassB extends LibClassA
{
   public int m1( int param )
   {
      int result = 773 - super.m1( param + 5 );
      if( param < 4 )
      {
          result += m2( param );
      }
      return result;
   }
   public int m3( int param )
   {
      return m1( param * 2 ) + 23;
   }
}
跑步者等级:

class OwnClass extends LibClassB
{

   public int m2( int param )
   {
      return 5 * m3( param );
   }
   public int m4( int param )
   {
      return param * param;
   }

   public int m5( int param )
   {
      return 165;
   }

   public static void main( String args[] )
   {
      OwnClass obj = new OwnClass();
      System.out.println( obj.m3( 2 ) );
      System.out.println( obj.m4( 9 ) );
      System.out.println( obj.m3( 3 ) );
   }
}

本守则的用意是什么?我不明白,我没有具体的意图。它只是做了一些计算,只是为了在更新库时显示一些问题。所以,首先你们有A类和B类,还有跑步者类。一切正常。然后,当您用ClassAUpdate交换ClassA时,您会遇到一些问题。例如,不确定递归。
class OwnClass extends LibClassB
{

   public int m2( int param )
   {
      return 5 * m3( param );
   }
   public int m4( int param )
   {
      return param * param;
   }

   public int m5( int param )
   {
      return 165;
   }

   public static void main( String args[] )
   {
      OwnClass obj = new OwnClass();
      System.out.println( obj.m3( 2 ) );
      System.out.println( obj.m4( 9 ) );
      System.out.println( obj.m3( 3 ) );
   }
}