博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Delphi7 (第一天:类的编写)续
阅读量:6840 次
发布时间:2019-06-26

本文共 3529 字,大约阅读时间需要 11 分钟。

program Project1;{$APPTYPE CONSOLE}uses  SysUtils,  Unit1 in 'Pas\Unit1.pas';  var    p:Person;begin          p:=  Person.Create;//抽象方法一样可以实例化,但是会出现警告语句          p.setName('Delphi作者');          p.setAge(0);          p.setSex('变态');          p.speak;          p.Destroy;//一般使用Free,Free方法对P进行判断,如果不为nil,那么就Destroy;          Readln;end.    {1. 接口和类的不同(1)接口中只有方法、属性,没有字段。所以接口中的属性存取都必须通过方法。(2)接口中的方法只有声明,没有实现。实现在类中完成。(3)接口中的方法没有作用域。都是公开的,但是在类中则放到不同作用域。(4)接口中的方法没有修饰字。可以认为它们都是抽象的。(5)不能创建接口实例,要使用接口,必须在类中实现,通过类调用接口的方法。(6)在类中必须声明和实现接口的所有方法。不像类继承中可以选择。(7)接口中的方法在类中实现时,可以加virtual/dynamic、abstract修饰,从而在子类中可以实现覆盖。{类从TObject继承,接口从IUnknown继承(= =! 接口也有祖先)。           }//ChildInterface = interface(ParentInterface)//['{GUID}']//{方法列表}//end;//其中的['{GUID}'](Globally Unique Identifier,全球惟一标示)称为接口标示。//COM类等可以有GUID标示。这样我们可以通过GUID得到对应的接口或者COM类(实例)。//接口标示不是必须的。在IDE环境中,按Ctrl+Shift+G键可以产生GUID,也可以调用API函数CoCreateGuid得到//。如果父接口定义了标示而它的子接口没有定义,该标示不会继承到子接口,此时子接口被认为没有标示。//Delphi的SysUtils单元提供了GUID和String之间的转换函数StringToGUID、GUIDToString。 //  }//摘自:http://blog.csdn.net/jiangwzh/article/details/7407086unit Unit1;{  public :派生类可以直接访问基类中的public数据  private:基类中的private不允许在派生类中访问,但是也有例外,            若基类和子类在同一个单元文件中,则可以访问,            若不在同一个单元文件则不能访问  protected:基类中的protected在子类中成为private}interfacetype   Person=class(TObject)  //继承的用法(父类)    private                   name:string;                   age:Integer;                   sex:string;   public           constructor create(name:string;age:Integer);overload;          //若定义两个构造函数,或者重载一个同名函数,需要使用overLoad,                                                                          //如果子类需要覆写父类中的方法,则方法需要被virsual修饰                                                                          //而子类中需要使用override修饰该方法或者过程           constructor  create(name:string;age:Integer;sex:string);overload;   //构造函数           procedure setName(name:string);           function  getName:string;           procedure setAge(age:Integer);           function  getAge:Integer;           procedure setSex(sex:string);           function  getSex:string;           procedure  speak;           procedure run();virtual;abstract;       //定义抽象方法,在实现区域不能实现该抽象方法,必须由子类实现,不能在实现部分出现该过程的声明           //destructor Destroy;overload;       //析构函数end;implementation        constructor person.create(name:string;age:Integer);        begin                       Self.name:=name;                       Self.age:=age;        end;           constructor person.create(name:string;age:Integer;sex:string);           begin                       Self.name:=name;                       Self.age:=age;                       Self.sex:=sex;           end;           procedure Person.setName(name:string);           begin                   Self.name:=name;           end;           function   Person.getName:string;           begin                  Result:= Self.name;           end;           procedure Person. setAge(age:Integer);           begin                   Self.age:=age;           end;           function   Person.getAge:Integer;           begin                   Result:=Self.age;           end;           procedure  Person.setSex(sex:string);           begin                   Self.sex:=sex;           end;           function   Person.getSex:string;           begin                   Result:=Self.sex;           end;           procedure person.speak;           begin                   Writeln('写的真慢');           end;          { destructor Person.Destroy;overload;           begin                        inherited Destroy;           end;  }end.

  

你可能感兴趣的文章
Kubernetes(1) kubectl 入门
查看>>
基于Pygame的Python小游戏,《这是一场滑稽与阴险的较量》
查看>>
php 商场收银收费系统,使用的策略模式
查看>>
转载 想要在项目中引入其他项目的方法为
查看>>
893B. Beautiful Divisors#美丽的因子(打表法)
查看>>
宜人贷,指旺理财,投米网有什么不一样?
查看>>
2016年宜昌楼市将迎来史上最激烈一战
查看>>
第一次团队冲刺4
查看>>
冒泡排序
查看>>
android studio 各种问题
查看>>
ios中一个开发者证书如何创建多个app应用
查看>>
创建和存储 cookie
查看>>
BZOJ2351[BeiJing2011]Matrix——二维hash
查看>>
Redis常用命令整理
查看>>
js的水仙花数的输出
查看>>
Codeforces Gym 100269 Dwarf Tower (最短路)
查看>>
mongo explain分析详解
查看>>
h5仿微信聊天(高仿版)、微信聊天表情|对话框|编辑器
查看>>
Internet设置->连接选项卡->局域网(LAN)设置 某些设置由系统管理员进行管理
查看>>
MySQL 行子查询
查看>>