C#多继承实现

jxwangjm 2013-07-31 10:38:21
比如说TextBox1:System.Windows.Form.TextBox,包括方法tm1();
Control1:System.Windows.Form.Control,包括方法cm1();
现在我要实现TextBox2,自动带有TextBox1.tm1和Control1.cm1()
...全文
165 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
智商余额不足 2013-07-31
  • 打赏
  • 举报
回复
引用 13 楼 hwenycocodq520 的回复:

public class TextBox2:TextBox
{
    TextBox1 t1;
    Control1 c1;

   //略
   
    public void tm1()
    {
        t1.tm1();
    }
    public void cm1()
    {
       c1.cm1();
    }
}
楼主这样能实现你要求么
TextBox2 t1;==>TextBox1
智商余额不足 2013-07-31
  • 打赏
  • 举报
回复

public class TextBox2:TextBox
{
    TextBox2 t1;
    Control1 c1;

   //略
   
    public void tm1()
    {
        t1.tm1();
    }
    public void cm1()
    {
       c1.cm1();
    }
}
楼主这样能实现你要求么
智商余额不足 2013-07-31
  • 打赏
  • 举报
回复
引用 10 楼 jxwangjm 的回复:
[quote=引用 7 楼 hwenycocodq520 的回复:] 楼主上点代码啊 都不知道你的 Control1是继承哪个或者是什么类
Control1:System.Windows.Form.Control[/quote] 如果你不想修改现在的类实现,你可以考虑TextBox2类组合 TextBox1和Control1 两个对象 在TextBox2中定义 tm1() cm1() 里面实现就调用相应类的方法 ,间接调用
wonkju 2013-07-31
  • 打赏
  • 举报
回复
C#不支持多继承.你上面的这两个类,都是普通的类,不是接口,所以不能达到这个功能. 如果是接口的话,比如接口IA,IB,都包含有Show(),即你的类要实现IA,IB的,也是要"显示实现接口"才行. 这是题外话了. 你上面的要求是无法实现,C#可以多继承接口,但是拒绝多继承类.
jxwangjm 2013-07-31
  • 打赏
  • 举报
回复
引用 7 楼 hwenycocodq520 的回复:
楼主上点代码啊 都不知道你的 Control1是继承哪个或者是什么类
Control1:System.Windows.Form.Control
智商余额不足 2013-07-31
  • 打赏
  • 举报
回复
引用 7 楼 hwenycocodq520 的回复:
楼主上点代码啊 都不知道你的 Control1是继承哪个或者是什么类
楼主的意思描述得清楚了,俺看漏了
jxwangjm 2013-07-31
  • 打赏
  • 举报
回复
C#是强类型语言,然而使用扩展方法似乎打破这一特性 问一下,C++能否可以实现我的要求 我曾用C++试了一下,它的多继承也并不是可以乱来的
智商余额不足 2013-07-31
  • 打赏
  • 举报
回复
楼主上点代码啊 都不知道你的 Control1是继承哪个或者是什么类
智商余额不足 2013-07-31
  • 打赏
  • 举报
回复
引用 5 楼 jxwangjm 的回复:
问题根源在于 从逻辑上讲,TextBox应该是Control1的继承类, 从继承树上讲,TextBox只是Control的继承类,而不是Control1的继承类 再补充一下,要求在.Net2.0中使用多继承解决
哈哈,扩展方法是3.0的特征
jxwangjm 2013-07-31
  • 打赏
  • 举报
回复
问题根源在于 从逻辑上讲,TextBox应该是Control1的继承类, 从继承树上讲,TextBox只是Control的继承类,而不是Control1的继承类 再补充一下,要求在.Net2.0中使用多继承解决
devmiao 2013-07-31
  • 打赏
  • 举报
回复
C#不支持多继承。你可以使用扩展方法给一个类附加额外的方法,代替继承。 比如 static class ControlHelper { public static void cm1(this Control c) { } } 这样所有Control以及Control的派生类都可以使用cm1这个方法了。
  • 打赏
  • 举报
回复
这个c#不可以实现。只能继承一个类来继承你想要的一个方法,然后另一个方法要自己新建。
智商余额不足 2013-07-31
  • 打赏
  • 举报
回复
public class TextBoxEx:TextBox { }

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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