class a
{
   int fn_CreateKey() {}; //创建主键函数
   
    void Run (    fn_CreateKey() );   //执行函数中,需要调用创建主键函数。   
}class b extends a 
{   
   int fn_CreateKey() {}; // b中的创建主键函数}1. a 是基类,b类继承a ,而b类是不确定的,可能有无数个b类,但都要继承a
2. 可能有某个b类,需要对创建主键的逻辑作改动, 需要覆盖a.fn_CreateKey() ,但对fn_CreateKey() 的调用,永远在a.Run()中。 请问该怎么设计,才能使主键创建有个默认函数,但继承者又可以按照自己需要重写?
重写后,a类中的主键函数作废。

解决方案 »

  1.   

    继承的时候你不覆盖fn_CreateKey就调用基类的fn_CreateKey了。如果你覆盖了就执行b的fn_CreateKey了。
      

  2.   

    问题是,调用fn_CreateKey的 Run(), 在基类里面
      

  3.   

    楼主的写法没错,只要重载fn_CreateKey方法就行a aa = new b();  // 将子类对象上溯至基类
    aa.Run();        // 实际会调用子类b的fn_CreateKey方法
      

  4.   

    b和a之间是父子关系,不可能有new的动作的。
      

  5.   

    最好高手们能给个demo,毕竟我写的不规范,有人让我考虑用接口,听得晕晕乎乎的,呵呵。