zoukankan      html  css  js  c++  java
  • 深入类中的方法[5] - 静态方法、类方法、静态类方法

    //静态方法是默认的, 如果不是虚方法或纯虚方法, 那它就是一个静态方法.
    
    
    
    
    

     //类方法就是通过类名就可以访问的方法
    
    unit Unit1;
    
    interface
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    
      Dialogs, StdCtrls;
    type
      TForm1 = class(TForm)
    
        Button1: TButton;
    
        Button2: TButton;
    
        procedure Button1Click(Sender: TObject);
    
        procedure Button2Click(Sender: TObject);
    
      end
    
    {类方法示例:}
    
    TMyClass = class(TObject)
    
      class procedure alert(s: string); {类方法只是比静态方法多了一个 class 指示字}
    
    end;
    
    {
    
      类方法不能在 private  protected ;
    
      类方法不能是虚方法;
    
      类方法只能使用类中的、在对象实例化以前的数据.
    
    }
    
    var
    
      Form1: TForm1; 
    
    implementation
    
    {$R *.dfm}
    
     
    
    { TMyClass }
    
    class procedure TMyClass.alert(s: string);
    
    begin
    
      ShowMessage(s);
    
    end
    
    {类方法可以直接使用}
    
    procedure TForm1.Button1Click(Sender: TObject);
    
    begin
    
      TMyClass.alert('万一'); {万一}
    
    end;
    
     
    
    {类的对象当然也能使用}
    
    procedure TForm1.Button2Click(Sender: TObject);
    
    var
    
      MyClass: TMyClass;
    
    begin
    
      MyClass := TMyClass.Create;
    
      MyClass.alert('万一');  {万一}
    
      MyClass.Free;
    
    end;
    
     
    
    end.
    
    
    
    
    

     
    
     
    
    //静态类方法 
    
    {现在的 Delphi 不仅仅有类方法, 同时有: 
    
      类变量: class var
    
      类常量: class const
    
      类类型: class type
    
      类属性: class property 
    
      静态类方法就是给类属性来调用的, 它可以存在与私有区(private), 
    
      譬如下面的 SetName 就是一个静态类方法:
    
    }
    
    TMyClass = class(TObject)
    
      private
    
        class var FName: string;
    
        class procedure SetName(const Value: string); static; {静态类方法又多了一个 static 指示字}
    
      published
    
      class property Name: string read FName write SetName;
    
    end;
    

     

  • 相关阅读:
    windows向Linux服务器上传、下载,服务器内复制、移动文件
    解决:ubuntu提示E: 无法获得锁 /var/lib/dpkg/lock-frontend
    PostgreSQL安装与简单操作
    LeetCode 234.回文链表
    LeetCode 445.两数相加 II
    LeetCode 24.两两交换链表中的节点
    LeetCode 19.删除链表的倒数第 n 个节点
    LeetCode 26.删除排序数组中的重复项
    Java 程序运行机制
    String 属于基础的数据类型吗?
  • 原文地址:https://www.cnblogs.com/luckForever/p/7255029.html
Copyright © 2011-2022 走看看