PL/SQL小技巧一个:在子类中怎么调用父类被重载的方法

<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 728x15, 创建于 08-4-23MSDN */ google_ad_slot = "3624277373"; google_ad_width = 728; google_ad_height = 15; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 160x600, 创建于 08-4-23MSDN */ google_ad_slot = "4367022601"; google_ad_width = 160; google_ad_height = 600; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

在和中,这是非常容易实现的
C++是:父类名::被重载的方法(参数表),比如:
     ancestorclass::name({arguments});
而在Java中,可以用super代替父类,如这样实现
     Super.name({arguments});

而在9iRelease2中都没实现这样的功能,
当然我们可以用其它办法来实现这样的功能。


父类对象类型
CreateorRePLaceTypeparentasobject(
      rowsIDinteger,
      memberprocedureprintAttr,
      finalmemberprocedureprintAttr_parent   --最好加final,防止子类对此方法进行重载
)notfinal;
/

CreateorrePLaceTypebodyparentis
      MemberprocedureprintAttris
      Begin
             printAttr_parent;
      End;

      finalMemberprocedureprintAttr_parentis
      Begin
             Super.printAttr; --此句是错地,会抛出identifier‘super.printAttr’mustbedeclared.因此要删除此句。
             Dbms_output.put_line(‘父类方法,RowsID:=’||rowsID);
      End;
End;
/


子类对象类型
CreateorrePLacetypechildunderparent(
      OverridingmemberprocedureprintAttr
)notfinal;
/

CreateorrePLacetypebodychildis
      OverridingmemberprocedureprintAttris
      Begin
             Dbms_output.put_line(‘子类过程---调用父类过程之前’);
             --在此处我们要用self.printAttr,因为printAttr不是直接在子类中定义的过程
             Self.printAttr;
             Dbms_output.put_line(‘子类过程---调用父类过程之后’);
      End;
End;
/


然后我们进行测试一下:
Declare
      vParentparent:=parent(1);
      vChildchild:=child(11);
begin
      dbms_output.put_line(‘运行父类过程‘);
      vParent.printAttr;
      dbms_output.put_line(‘运行子类过程‘);
      vChild.printAttr;
end;


运行结果:

运行父类过程
父类方法,RowsID:=1
运行子类过程
子类过程---调用父类过程之前
父类方法,RowsID:=11
子类过程---调用父类过程之后


虽说这有点儿麻烦,父类有几个被重载的方法,你就要在父类父加几个另外的方法
但也是没办法的办法,’曲线救国’嘛。

<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 728x15, 创建于 08-4-23MSDN */ google_ad_slot = "3624277373"; google_ad_width = 728; google_ad_height = 15; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 160x600, 创建于 08-4-23MSDN */ google_ad_slot = "4367022601"; google_ad_width = 160; google_ad_height = 600; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
阅读更多
文章标签: java 测试 c
个人分类: 数据库
上一篇根据表名自动生成INSERT,UPDATE,DELETE,SELECT的SQL语句
下一篇sqlserver中字段类型及说明
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭