请教一个关于类方法重载的设计问题,面向对象有经验请进

gzssqx 2003-10-16 10:32:17
容器class A 包含 class B 的一个实例,
MB1是 B 的一个方法,
有没有办法在 A 中对 B 的方法MB1进行重载?
...全文
36 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhoutian618 2003-10-17
  • 打赏
  • 举报
回复
不能重载,

可以考虑用回调方法或事件的形式来实现一下同类似的功能!
zzh54zzh 2003-10-17
  • 打赏
  • 举报
回复
不可能进行重载。除非a是b的派生类。
flyinwuhan 2003-10-16
  • 打赏
  • 举报
回复
同意scsun(明月清风)
先从class b 派生 class c ,
class c 中重载MB1
class a 再包含class c.

哈哈!
HiMrXia 2003-10-16
  • 打赏
  • 举报
回复
直接的重载好像没有这个语法吧,重载应该只是针对祖先类中方法而言的。

不过你是不是可以先由B继承一个C,在C中申明C.MC1对B.MB1进行重载,实现C.MC1时 inherited的同时调用一个本地方法C.MC2,将class A中B实例的祖先改为C,再在A中定义一个本地方法指向C.MC2,这样或许可以

瞎说的,还得看高手指点,就当抛块砖吧

UP
huojiehai 2003-10-16
  • 打赏
  • 举报
回复
容器class A 包含 class B 的一个实例,
MB1是 B 的一个方法,
有没有办法在 A 中对 B 的方法MB1进行重载?

class A不是class B的派生类

不是继承没重载(override)的说法
g58521547 2003-10-16
  • 打赏
  • 举报
回复
这个东西我也是一知半解,哈哈强烈关注,学习。。。
scsun 2003-10-16
  • 打赏
  • 举报
回复
呵呵,从class B派生class C,然后在Class A中包含其实例。。。。。。
dickeybird888 2003-10-16
  • 打赏
  • 举报
回复
好象没有什么好的办法!
vavyboyleon 2003-10-16
  • 打赏
  • 举报
回复
“一个方法可以使用overload 指示字来重新声明,此时,若重新声明的方法和祖先类的方法具有不同的参数,它只是重载了这个方法,并没有隐藏它。当在派生类中调用此方法时,依靠参数来决定到底调用哪一个。”——《Object Pascal中文参考手册》
通过上面这段话我们可以知道,重载是一个派生类针对其主线类的一种行为。
而容器类是指一个类,它的一个实例又来存放其他类的实例,通常在容器类中存放的都是其他类型的实例的一个指针
所以,只要你的类A不是一个类B的派生类(ClassA作为一个容器类,通常不会有这种继承情况发生),就谈不到重载B的某个方法。
你说指的是不是只是实现一个类B的方法呢?
我所理解的就是这样,还往高手指正
csntgao 2003-10-16
  • 打赏
  • 举报
回复
那就不叫重载!
你要在classA实现MB1方法,即在MB1中调用Class B的MB1方法

建议你先看懂什么叫面向对象再说!
gzssqx 2003-10-16
  • 打赏
  • 举报
回复

沉得好快啊

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧