群里我师傅给我的答案:

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. css布局课件

    1.什么是CSS盒模型 我们的网页就是通过一个一个盒子组成的. 2.一个盒子拥有的属性:宽和高(width和height).内边距(padding).边框(border).外边距(margin) wi ...

  2. Delphi_OD_代码_调试_Delphi反调试技术(以OD为例附核心原代码) (转)

    1.程序窗口[chuang kou]句柄[ju bing]检测原理:用FindWindow函数[han shu]查找[cha zhao]具有相同窗口[chuang kou]类名和标题的窗口[chuan ...

  3. html: title换行方法 如a链接标签内title属性鼠标悬停提示内容换行

    换行代码符合分别为: “&#;”和“&#;” <a href="0.shtml" title="第一排 第二排 第三排">title ...

  4. JDBC连接实例

    package com.javaee.corejava; import java.sql.Connection; import java.sql.DriverManager; import java. ...

  5. jsgen 搭建

    1,mongodb 2,redis  http://www.cnblogs.com/lxx/archive/2013/06/04/3116985.html http://blog.csdn.net/w ...

  6. xml保存基本信息

    public static string getXML(string nodeName) { string strReturn = ""; try { string fileNam ...

  7. i2c 读写

    在I2C设备读取,必须是在同一个周期内. 一个例子,可以同时读出两个值 int read_register_double_value(int reg_addr, unsigned char *valu ...

  8. 浏览器内核控制Meta标签

    国内的主流浏览器都是双核浏览器:基于Webkit内核用于常用网站的高速浏览.基于IE的内核用于兼容网银.旧版网站.以360的几款浏览器为例,我们优先通过Webkit内核渲染主流的网站,只有小量的网站通 ...

  9. LAMP_02_WIN下Apache安装配置

    1.下载http://httpd.apache.org/download 2.配置 下载完解压后有readme,首先进行阅读其中的VC运行库必须安装,否则会出现各种奇葩问题用命令行安装服务 发现报错, ...

  10. LeetCode 371. Sum of Two Integers

    Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -. Exam ...