我想设计了一个类框架,当我设计得差不多的时候,我应该把一些具有相似功能但接口可能不一样的类放在父类中,还是放在子类中呢?如果我真的想放在父类中,应该如何设计呢?能解决问题,一定给分
解决方案 »
- ADOStoredProc调用存储过程后,如何获得存储过程Return的值
- 附加数据库为什么出错?
- MIDAS是否已经淘汰?
- 由程序自已来判断,如保知道DLL里有某个函数.
- 如何获取汉字的拼音代码?????????????????????????????急急急急.........
- DELPHI入门级问题,但我难住了,郁闷中!!!
- 关于非法操作??求救!!!!!给100分在线等候!!!
- 用户权限问题,急!
- 如何从这些信息当中得到算法?急!正在求救....等待救世主....
- 怎样写代码知道显示模式是800*600还是1024*768?请指点
- 如果要用数组保存大于64K的信息该怎么办亚???
- DayOfWeek的用法
2.使用类继承。在父类定义过程(一般放在protected区),并实现相同的功能;在子类override这个过程,继承或者完全覆盖。—————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————
Function def:boolean;
1、如果不只一个但不是所有子类使用,可以在父类中虚拟,子类中实现:
父类
type
TForm1 = class(TForm)
private
{ Private declarations }
protected
function abc: Boolean; virtual;//注意这里
public
{ Public declarations }
end;
子类
type
TForm2 = class(TForm1)
private
{ Private declarations }
protected
function abc: Boolean; override;//注意这里
public
{ Public declarations }
end;
2、如果只有一个子类使用,直接在子类写好了。—————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————
Collects = class
public
FCollects : array of BASE;
end; BASE = class
public
procedure ABC; abstract;
end; Derived1 = class (BASE)
private
procedure DEF;
public
procedure ABC;
end; Derived2 = class (BASE)
private
procedure GHI;
public
procedure ABC;
end;如果说我要在Derived2中添加一个新功能NEWFUN,而且该功能需要暴露于外界成为一个接口,以便在Collections类中调用,那么我应该怎么办?在BASE类中新建一个接口NEWFUN后,再在Derived1中添加一个实现NEWFUN的函数吗?这种方法如果在子类不多的时候还可接受,但是如果子类一但多起来,那如果哪一个子类需要向外界暴露多一个接口,都必须要在所有的同层次的子类中实现对它自己无用的该接口,这样子不是很麻烦?
中我找到了一种算是可行的答案了