求教关于基类引用(50)

  • 主题发起人 主题发起人 ykjt
  • 开始时间 开始时间
Y

ykjt

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);const eNum=3;var Employee:array of TEmployee; i:integer;begin setLength(Employee,eNum); Employee[0]:=TProgramer.Create; //把基类引用employee[0]指向刚创建的TProgramer对象 Employee[1]:=TBusinessMan.Create; //把基类引用employee[1]指向刚创建的TBusinessMan对象 Employee[2]:=TDocManager.Create; //把基类引用employee[2]指向刚创建的TDocManager对象 for i:=0 to Length(Employee)-1 do Employee.startWorking; //在运行期根据实际的对象类型动态绑定相应的方法。{从语言实现多态的角度来说,多态是通过基类指针或引用指向派生类的对象,调用其虚方法来实现的。Employee []为基类对象引用数组,其成员分别指向不同的派生类对象,当调用虚方法,就实现了多态}end;---------------------------Employee[0],Employee[1],Employee[2]中是同一基类,这种对同一基类的多次引用是如何实现的?
 
不知道你在说什么
 
VCL源码里就有你要的答案,非常简单的继承,虚方法应用,不知道你哪里不懂?
 
也即:什么是类引用?
 
Employee[0],Employee[1],Employee[2]===============同一基类,同一内存区域吗
 
startWorking是基类定义的虚方法吧....你明白继承与虚方法是干吗用的吗。。。。
 
类变量 --- 你所说的引用(Employee[0]), 其实就是一个类实例的地址, 如果两个变量指向同一个实例则内存区域相同, 如果分别指向不同的实例则内存区域也不同!~~
 
多人接受答案了。
 
后退
顶部