群里我师傅给我的答案:

unit Unit4;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type
TForm4 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; /// <summary>
/// 我曾经容易犯的错误理解:
/// Tperson再全局静态内存中 肯定得有个实例 才能 调用 function啊
///
/// 知识点:
/// 类方法是不需要初始化实例的
/// 创建实例的时候
/// 不是的,class function 类似于全局函数,只是挂名在这个类下面
/// class function 是不能访问Self的
/// Self都没有,当然也不能访问成员变量了
/// class 是类的方面,没有实例,就没有self
/// </summary>
TPerson = class
//类常量得写在这里
const hehe1 = 'hehe1';
private
Fname: string;
class var Fname1: string;
procedure Setname(const Value: string);
class procedure Setname1(const Value: string); static;
public
/// <summary>
/// 实例方法
/// </summary>
function sayName(): string; /// <summary>
/// 类方法----class function 类似于全局函数
/// </summary>
class function sayName1(): string; /// <summary>
/// 实例变量
/// </summary>
var cde: string; /// <summary>
/// 类变量-----按理说那就是全局变量了
/// </summary>
class var cde1: string; /// <summary>
/// 实例常量
/// </summary>
const hehe = 'hehe'; /// <summary>
/// 类常量 ------ 全局常量了(但是不能写在这里,要写在上面,写在这里会报错)
/// </summary>
//class const hehe1 = 'hehe1'; /// <summary>
/// 实例属性
/// </summary>
property name: string read Fname write Setname; /// <summary>
/// 类属性
/// </summary>
class property name1: string read Fname1 write Setname1;
end; var
Form4: TForm4; implementation {$R *.dfm} procedure TForm4.Button1Click(Sender: TObject);
begin
//TPerson.cde := 'wokao';这句会报错,因为没有实例 无法访问实例的变量
TPerson.cde1 := 'wokao';
ShowMessage(TPerson.cde1);
ShowMessage(TPerson.hehe);//这句竟然也可以
ShowMessage(TPerson.hehe1);
//ShowMessage(TPerson.name);这句不可以
ShowMessage(TPerson.name1);
end; { TPerson } function TPerson.sayName: string;
begin
//实例方法即可以访问类属性也可以访问正常的属性
name := 'wokao';
name1 := 'wokao1';
end; class function TPerson.sayName1: string;
begin
//类方法只能访问类属性
name1 := 'wokao1';
//这里会报错,因为没有实例,所以不能访问实例的属性.
//name := 'wokao';
end; procedure TPerson.Setname(const Value: string);
begin
Fname := Value;
end; class procedure TPerson.Setname1(const Value: string);
begin
Fname1 := Value;
end; end.

delphi 类方法、类变量、类常量、类属性的研究,自己的研究的更多相关文章

  1. PHP面向对象学习-属性 类常量 类的自动加载 构造函数和析构函数 访问控制(可见性)

    在类的成员方法里面,可以用 ->(对象运算符):$this->property(其中 property 是该属性名)这种方式来访问非静态属性.静态属性则是用 ::(双冒号):self::$ ...

  2. PHP面向对象——类常量,魔术常量与延期绑定

    普通常量  define('常量名',常量值): 以前说过:define定义的常量,全局有效 无论是页面内,函数内,类内,都可以访问. 例: define('ACC','Deny')    class ...

  3. Php面向对象 – 类常量

    Php面向对象 – 类常量 类常量:类中,保存执行周期内,不变的数据. 定义: constkeyword const 常量名 = 常量值 样例: class Student { public  $st ...

  4. php类常量

    类常量类常量可以使用define定义,也可用const定义,但是在类的内部,只允许用const定义,类常量不能更新,也不能删除类常量通常是大写的,两个单词之间用下滑线连接,如MY_NATION类常量在 ...

  5. php : 类常量

    使用总结: 1.不能使用 define 来定义 2.通过 "类名::常量名" 来获取 /** * PHP类常量 * * 类常量属于类自身,不属于对象实例,不能通过对象实例访问 * ...

  6. python - class类 (二) 静态属性/类方法/静态方法

    静态属性: #静态属性 = 数据属性 (@property) class mianji(): def __init__(self,x,y): self.x = x self.y = y #类的函数方法 ...

  7. python的类的 静态属性 类方法 静态方法

    一.静态属性 静态属性说的就是数据属性 1.定义一个房间的类,求下这个房间的面积 class Room: def __init__(self,name,ower,width,length,heigh) ...

  8. AD属性常量类

    参考:http://www.selfadsi.org/user-attributes.htm namespace Common { /// <summary> /// AD中的属性,没有出 ...

  9. Delphi 遍历类中的属性

    http://blog.csdn.net/easyboot/article/details/8004954 Delphi 遍历类中的属性 标签: delphistringbuttonclassform ...

随机推荐

  1. SpringMVC 请求路径结尾存在.使用@PathVariable访问路径内容,路径参数获取不准确的问题

    SpringMVC采用Get方式请求资源时,如果请求路径的结尾中带有小数点(.)时,同时使用@PathVariable访问路径内容时,请求路径中最后一个小数点及其后面的内容会被Spring截断丢弃比如 ...

  2. Beta版本冲刺——day6

    No Bug 031402401鲍亮 031402402曹鑫杰 031402403常松 031402412林淋 031402418汪培侨 031402426许秋鑫 站立式会议 今日计划表 人员 工作 ...

  3. JS 深度拷贝 Object Array

    JS 深度拷贝 Object Array function cloneObj(o) { var isArray = o instanceof Array; var isObject = o insta ...

  4. Mapcontrol 遍历所有图层方法

    mapcontrol 遍历所有图层方法 2011-04-29 19:51 通过IMap中的get_layers()可以遍历MapControl中当前的图层.此方法可以通过指定UID对图层进行过滤或者分 ...

  5. VS2012 InstallShield2013LimitedEdition激活

    VS2012 InstallShield2013LimitedEdition激活 在实际开发工作中由于升级操作系统后,不知何种原因,导致 InstallShield2013LimitedEdition ...

  6. 营业额统计(SBT)

    营业额统计(SBT) #include<cstdio> #include<cstring> #include<string> #include<cstdlib ...

  7. 如何使用openssl生成RSA公钥和私钥对

      在ubuntu上要使用openssl的话需要先进行安装,命令如下: sudo apt-get install openssl 安装完成就可以使用openssl了. 首先需要进入openssl的交互 ...

  8. windows2003 IIS6.0右键属性没有asp.net选项卡的解决办法

    windows2003 IIS6.0右键属性没有asp.net选项卡的解决办法 1,如果是只安装了.net framework 1.1 在iis中是不显示那个选项卡的.默认就会支持asp.net1.1 ...

  9. WPF中TreeView的使用

    因为项目中需要用到TreeView控件,由于是第一次在WPF中用到,因此事先在网上搜了很多关于数据绑定的方法介绍,个人经过实际应用,觉得WPF中的HierarchicalDataTemplate定义模 ...

  10. Codeforces Round #381 (Div. 2)B. Alyona and flowers(水题)

    B. Alyona and flowers Problem Description: Let's define a subarray as a segment of consecutive flowe ...