群里我师傅给我的答案:

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. WEB开发中前后台树形菜单的展示设计

    在WEB开发中经常需要进行树形菜单的展示,本例通过不同角度的总结了如下三种实现方式: 通过JS的递归实现前端菜单DOM的动态创建 通过JSP的include指令结合JSTL表达式语言递归实现菜单的展示 ...

  2. 浏览器下载/导出文件 及jQuery表单提交

    1 比如以下按钮, 用于导出文件,如EXCEL文件. <li> <button class="whiteBg btn2" onclick="doExp( ...

  3. Window 消息大全

    消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了.例如,单击鼠标.改变窗口尺寸.按下键盘上的一个键都会使Windows发送一个消息给应用程序. 消息本身是作为一个记录传递给应用程序 ...

  4. asp.net教程:GridView导出到Excel或Word文件

    asp.net教程:GridView导出到Excel或Word文件</ br> 在项目中我们经常会遇到要求将一些数据导出成Excel或者Word表格的情况,比如中国移动(我是中国移动用户) ...

  5. 15、java中的内部类介绍

    内部类顾名思义就是定义在类中的类,下面做一个简单介绍: 内部类的访问规则:1,内部类可以直接访问外部类中的成员,包括私有. 之所以可以直接访问外部类中的成员,是因为内部类中持有了一个外部类的引用,格式 ...

  6. 微信:JSSDK开发

    根据微信开发文档步骤如下: 1.先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”. JS接口安全域名设置 mi.com(前面不用带www/http,域名必须备案过) 2.引 ...

  7. MyBatis入门学习教程-解决字段名与实体类属性名不相同的冲突

    在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演示一下这种情况下的如何解决字段名与实体类属性名不相同的冲突. 一.准备演示需要使用的表和数据 CREATE TAB ...

  8. Google Tensorflow 源码编译(三):tensorflow<v0.5.0>

    这几天终于把tensorflow安装上了,中间遇到过不少的问题,这里记录下来.供大家想源码安装的参考. 安装环境:POWER8处理器,Docker容器Ubuntu14.04镜像. Build Tens ...

  9. mfc release 版本 内存不足 的解决方法

  10. 手机平板等移动端适配跳转URL的js代码

    <script type="text/javascript"> if(/AppleWebKit.*mobile/i.test(navigator.userAgent) ...