zoukankan      html  css  js  c++  java
  • 多个接口出现同名函数的处理-转

    Delphi的处理原则是:

        给同名的函数分别设置别名,再分别实现以别名为名句的函数,以后类在调用时就是别名即可。

    代码如下:

    1.声明接口

    type
      
    IInter1
    =interface ['{769D95CA-90CE-41BA-A195-A6F43A30A3FC}']
      
    function getname:string; procedure setname(sname:string);
    end;
    IInter2
    =interface ['{1CE978B4-F7AC-44B1-9EAD-5B8CCE1510A1}']
       function
    getname:string;
       procedure
    setname(sname:string);
    end;
    2.创建类
       声明部分
    type
       TMyClass=class(TInterfacedobject,IInter1,IInter2)
       private
         FName:string;
       public
         { DONE : 设定别名 }
         function IInter1.getName=Inter1_getname;
         function IInter2.getName=Inter2_getname;
         procedure IInter1.setname=Inter1_setname;
         procedure IInter2.setname=Inter2_setname;
        { DONE : 重新命名 }
         function  Inter1_getname:string;
         function  Inter2_getname:string;
         procedure Inter1_setname(sname:string);
         procedure Inter2_setname(sname:string);
        { DONE : 析构 }
        destructor destroy;override;
      end;
    实现部分
    { TMyClass }

    destructor TMyClass.destroy;
    begin
      MessageDlg('exit object',mtinformation,[mbok],0);
      inherited;
    end;



    function TMyClass.Inter1_getname: string;
    begin
      MessageDlg('get inter1 name',mtinformation,[mbok],0);
      Result:=FName;
    end;

    procedure TMyClass.Inter1_setname(sname: string);
    begin
       MessageDlg('set inter1 name',mtinformation,[mbok],0);
       FName:=sname;
    end;

    function TMyClass.Inter2_getname: string;
    begin
      MessageDlg('get inter2 name',mtinformation,[mbok],0);
      Result:=FName;
    end;

    procedure TMyClass.Inter2_setname(sname: string);
    begin
      MessageDlg('set inter2 name',mtinformation,[mbok],0);
      FName:=sname;
    end;
    3.调用以上类中的函数:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
        myclass:=TMyClass.Create;
      try
        myclass.Inter1_setname('88');
        ShowMessage(myclass.Inter2_getname);
      finally
        myclass.Free;
      end;
    end;
  • 相关阅读:
    Windowsforms 中对文件操作
    ADO.net增删改的使用
    ADO.net数据访问
    可空类型
    FineUI 页面跳转
    ASP.NET页面之间传递值的几种方式
    C# Find() 与 FindAll()方法的使用
    在Sql中将 varchar 值 '1,2,3,4,5,6' 转换成数据类型 int
    DataSet、DataTable、DataRow、DataColumn区别及使用实例
    C#中如何排除/过滤/清空/删除掉字符串数组中的空字符串
  • 原文地址:https://www.cnblogs.com/luckForever/p/7254993.html
Copyright © 2011-2022 走看看