关于使用多态的问题的讨论(0分)

  • 主题发起人 主题发起人 wenaideyu
  • 开始时间 开始时间
W

wenaideyu

Unregistered / Unconfirmed
GUEST, unregistred user!
关于使用多态的问题:
通常我们是使用这样使用多态的:
1,类定义
type
TBaseClass = class
public
procedure a;virtual;
.....
end;
TClass1 = class(TBaseClass)
public
procedure a;override;
....
end;
TClass2 = class(TBaseClass)
public
procedure a;override;
....
end;

2,在程序中
var
c1: TBaseClass;
begin

//子类的指针赋给父类
c1 := TClass2.create;
c1.a;
end;

然后通过把子类的指针赋给父类,这样,当调用父类的方法a时,实际上是调用了
相应子类的方法a;但是这样做有一个问题,这要求我们在设计父类的时候必须考虑仔细,把所有可能的方法都考虑进去,如果不是这样的话,以后,当子类中出现父类所不包含的新方法时,就无法调用,从而利用不了子类的特性,不知道有没有一种比较好的解决方法,能够利用多态的性质,而又不出现上面的问题???
 
工具就是工具,设计就是设计。多态是一个种实现技术,
你问的是个设计问题。这是2码事情。
如果你手里只有一把榔头,那你看什么都会是钉子。
 
后退
顶部