delphi 类方法、类变量、类常量、类属性的研究,自己的研究
群里我师傅给我的答案:
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 类方法、类变量、类常量、类属性的研究,自己的研究的更多相关文章
- PHP面向对象学习-属性 类常量 类的自动加载 构造函数和析构函数 访问控制(可见性)
在类的成员方法里面,可以用 ->(对象运算符):$this->property(其中 property 是该属性名)这种方式来访问非静态属性.静态属性则是用 ::(双冒号):self::$ ...
- PHP面向对象——类常量,魔术常量与延期绑定
普通常量 define('常量名',常量值): 以前说过:define定义的常量,全局有效 无论是页面内,函数内,类内,都可以访问. 例: define('ACC','Deny') class ...
- Php面向对象 – 类常量
Php面向对象 – 类常量 类常量:类中,保存执行周期内,不变的数据. 定义: constkeyword const 常量名 = 常量值 样例: class Student { public $st ...
- php类常量
类常量类常量可以使用define定义,也可用const定义,但是在类的内部,只允许用const定义,类常量不能更新,也不能删除类常量通常是大写的,两个单词之间用下滑线连接,如MY_NATION类常量在 ...
- php : 类常量
使用总结: 1.不能使用 define 来定义 2.通过 "类名::常量名" 来获取 /** * PHP类常量 * * 类常量属于类自身,不属于对象实例,不能通过对象实例访问 * ...
- python - class类 (二) 静态属性/类方法/静态方法
静态属性: #静态属性 = 数据属性 (@property) class mianji(): def __init__(self,x,y): self.x = x self.y = y #类的函数方法 ...
- python的类的 静态属性 类方法 静态方法
一.静态属性 静态属性说的就是数据属性 1.定义一个房间的类,求下这个房间的面积 class Room: def __init__(self,name,ower,width,length,heigh) ...
- AD属性常量类
参考:http://www.selfadsi.org/user-attributes.htm namespace Common { /// <summary> /// AD中的属性,没有出 ...
- Delphi 遍历类中的属性
http://blog.csdn.net/easyboot/article/details/8004954 Delphi 遍历类中的属性 标签: delphistringbuttonclassform ...
随机推荐
- Oracle用法集锦
查询第一条数据 修改表名 ALTER TABLE tablename RENAME TO newtablename 修改列名: ALTER TABLE BD_PRI RENAME COLUMN EU_ ...
- 阿里云的9折推荐码 8DIER4
推荐码: 8DIER4 我有一个阿里云9折推荐码:8DIER4,分享给你,第一次购买云服务器或云数据库可享受原价9折优惠,还可多人使用,拿走不谢. 阿里云地址:http://www.aliyun.co ...
- 重装系统后,delphi7打开报错
delphi7运行不正常的提示unable to rename'c:\program files\Borland\delphi7\Bin\delphi32.$$$'to'c:\program file ...
- VR定制开发、AR定制开发(长年承接虚拟现实、增强现实应用、VR游戏定制开发,北京公司,可签合同)
Cardboard SDK for Unity的使用 上一篇文章作为系列的开篇,主要是讲了一些虚拟现实的技术和原理,本篇就会带领大家去看一看谷歌的Cardboard SDK for Unity,虽然目 ...
- MyBatis学习(二)、SQL语句映射文件(2)增删改查、参数、缓存
二.SQL语句映射文件(2)增删改查.参数.缓存 2.2 select 一个select 元素非常简单.例如: <!-- 查询学生,根据id --> <select id=" ...
- Linux:加载硬盘
在腾讯云购买了一个云服务器,送了20G的系统盘,购买了一个50G的数据盘. 第一次进入系统后,通过镜像中自带的脚本,挂载数据盘. 后来重装了系统,进入系统后查看硬盘信息.
- 一个人独立开发 3D 游戏引擎可能吗?
作者:孙志超链接:https://www.zhihu.com/question/24733255/answer/42000966来源:知乎著作权归作者所有,转载请联系作者获得授权. 当然可以,但难道有 ...
- 燕十八MySQL优化学习笔记
观察 show status; 里面的这三个参数;Queries Threads_connected Threads_running判断周期性变化 -------------------------- ...
- mir [20161220]
最近玩backmir,查询了一些资料,突然领悟到原来各个地方的boss攻击和防御都有一定的上限,而相对应的,玩家也有攻击和防御,只要玩家的攻防能对付boss的攻防,就可以无伤打boss. 小时候玩热血 ...
- C++设计模式-State状态模式
State状态模式作用:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类. UML图如下: State类,抽象状态类,定义一个接口以封装与Context的一个特定状态相关的行为. ...