谈谈Delphi中的类和对象:四、抽象类和它的实例

四、抽象类和它的实例

  Delphi中有一个类称为是抽象类,你不能天真的直接为它创建一个实例,如

var
    StrLst: TString;
begin
    StrLst:= TString.Create;
    StrLst.Add(‘I love China‘);
    StrLst.Free;
end;

  这是不对的,因为TString是一个抽象类。

  那么怎么为这样的抽象类构造实例呢?答案就是借助它的非抽象子类。我们知道TString有一个TStringList的非抽象子类。所以可以这样操作

var
    StrLst: TString;    //还是可以通过抽象类来进行声明
    //或者直接用 StrLst:TStringList;    不过前者更好一些
begin
    StrLst:= TStringList.Create;    //但是创建具体的对象就必须使用抽象类的非抽象子类
         //而且这样创建的实例在内存中是其子类的结构,
         //尽管在var里面使用抽象类声明的,但是具体的create是其非抽象子类
    StrLst.Add(‘I love China‘);
    StrLst.Free;
end;

  

  

时间: 2024-08-26 00:21:58

谈谈Delphi中的类和对象:四、抽象类和它的实例的相关文章

谈谈Delphi中的类和对象:五、类是一种对数据和操作高度的封装机制;六、类是一种代码重用机制

五.类是一种对数据和操作高度的封装机制 1)数据封装 unit Unit2; interface type TEmployee = class; private FName: String; public Constructor Create; function GetName: String; procedure SetName(AName: String); end; implementation constructor TEmployee.Create; begin FName:= 'Xu

Delphi对象的秘密:在Delphi中的类实例实际上是指向堆中的类实例数据的3 2位指针

在Delphi中的类实例实际上是指向堆中的类实例数据的32 位指针 当访问对象的域.方法和属性时,编译器会自动产生一些代码来处理这个指针.因此对于新手来说,对象就好像是一个静态变量.这意味着,Delphi无法像C++那样在应用程序的数据段中为类分配内存,而只能在堆中分配内存. 所以Delphi的对象实例需要最后自己调用Free()方法来释放,而不能在作用域结束之后被自动释放

Delphi中Twebbrowser的document 对象的属性、方法、事件一览(转)

Delphi中Twebbrowser的document 对象的属性.方法.事件一览(转) 2012-12-07 10:19:39|  分类: Delphi 零碎 |  标签:webbrowser  属性  方法  事件  delphi   |举报 |字号大中小 订阅 {ihtmldocument2 方法:}write //写入writeln //写入并换行open //打开一个流,以收集 document.write 或 document.writeln 的输出close //关闭并输出用 do

Runtime of Objective-C 2-理解oc中的类和对象

1: 类Class:       typedef struct objc_class * Class;     从Class的定义可以看出,它是一个 objc_class 结构类型的指针,objc_class又是什么呢? struct objc_class { struct objc_class* isa; struct objc_class* super_class; //root的为null const char* name; long version; long info; long in

类、对象、方法、属性和实例变量

放置方法的程序单元是类,类中提供一个或多个方法,为类执行任务. 方法执行一个任务,并可返回一个结果. 类的实例称为对象. 给对象发送消息称为一个方法调用,告诉对象要执行一个任务. 对象有属性,可以在程序中使用,这些属性在对象的类中用字段指定属性. public class Count//每个类声明包含关键字class加类名,public是访问修饰符 { //类通常有一个或多个方法,操纵属于该类的特定对象的属性,属性在类中声明表示为变量,这种变量在类中声明,放在方法体之外. //属性声明可以有ge

Delphi中线程类TThread 实现多线程编程

作者:Rogee出处:Http://Rogee.cnblogs.com/心得:BLOG是什么,它是一个记录学习过程的东西 Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本上都是对TThread类的几个成员作一简单介绍,再说明一下Execute的实现和Synchronize的用法就完了.然而这并不是多线程编程的全部,我写此文的目的在于对此作一个补充. 线程本质上是进程中一段并发运行的代码.一个进程至少有一个线程,即所谓的主线程.同时还可以

【编程语言】Java中的类和对象learn by Imooc

 一.什么是类和对象 * 类是模子,确定对象将会拥有的特征(属性)和方法 * 类的特点: *     类是对象的类型 *     具有相同属性和方法的一组对象的集合 * 对象的属性 *     属性-对象具有的各种特征 *     每个对象的每个属性都有用的特定值 * 对象的方法 *     方法-对象执行的操作(能干什么) * 类和对象的关系 *     类是抽象的概念,仅仅是模板 *     对象是一个你能够看得到,摸得着的具体实体 二. 如何定义Java的类 * 1.类的重要性:所有Jav

Delphi中TList类应用

在DELPHI中指针最常见的就是和类TLIST结合起来使用.下面是一个很简单的例子,希望对这个例子的分析能让大家对使用TLIST类有一个简单的认识. 代码的功能是使用指针和Tlist来生成一个牌串,并将牌串保存在t_CardInfo中. procedure TForm1.Button1Click(Sender: TObject); const //黑桃,红桃,方块,草花 CardType:array[0..3] of String = ('S','H','D','C'); const //取出的

零基础入门学习java第十一节:Java中的类和对象

今天要说的是Java中两个非常重要的概念——类和对象. 什么是类,什么又是对象呢?类是对特定集合的概括描述,比如,人,这个类,外在特征上,有名字,有年龄,能说话,能吃饭等等,这是我们作为人类的相同特征,那么对象呢?我们口口声声说要面向对象编程,可是找了这么久也没找到对象,这还怎么编程(滑稽).此对象非彼对象,Java中的对象是某个具体类的实例,就好比你和我都是人类这个大类的一个实例个体,也就是说,我们都是人类的一个具体对象,我们有各自的名字和年龄. 那为什么要用类和对象这样的概念呢? 这是一个好