c#一个简单的实例告诉你,多继承还可以这么来
我想多继承,要怎么搞???我想你一定会说“接口”,那么你有没有遇到这样的问题,你需要在一个类中继承另外2个类的所有方法,你要怎么做呢???难道要Coyp实现代码?No,往下看。。。
定义一个空接口比如
public interface I飞 { }
然后将你需要继承的一个类修改为静态的,然后修改方法。
假如你的方法原来是这样的
public void 飞() { Console.WriteLine("开始飞了"); }
那么就修改为这样
public static void 飞<T>(this T 飞实例) where T : I飞 { Console.WriteLine("开始飞了"); }
然后你就可以继承了
public class 苍蝇 : I飞 { public virtual void 自我介绍() { Console.WriteLine("我是苍蝇"); } public void 飞一个看看() { this.飞(); } }
这样你就不需要为继承接口Copy相同的代码了
全部代码:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace testjiekou 7 { 8 class Program 9 { 10 static void Main(string[] args) 11 { 12 超级老虎 t = new 超级老虎(); 13 t.自我介绍(); 14 t.我会飞() 15 Console.ReadKey(); 16 } 17 } 18 19 public interface I飞 20 { } 21 public static class 飞接口的扩展 22 { 23 public static void 飞<T>(this T 飞实例) where T : I飞 24 { 25 Console.WriteLine("开始飞了"); 26 } 27 } 28 29 public class 老虎 30 { 31 public virtual void 自我介绍() 32 { 33 Console.WriteLine("我是老虎"); 34 } 35 } 36 37 public class 苍蝇 : I飞 38 { 39 public virtual void 自我介绍() 40 { 41 Console.WriteLine("我是苍蝇"); 42 } 43 44 public void 飞一个看看() 45 { 46 this.飞(); 47 } 48 } 49 50 public class 超级老虎 : 老虎, I飞 51 { 52 public override void 自我介绍() 53 { 54 Console.WriteLine("我是超级老虎"); 55 } 56 public void 我会飞() 57 { 58 this.飞(); 59 } 60 } 61 }
怎么样,是不是有所感觉了呢。。。是不是发现什么了呢。。。
作者:冰封一夏
出处:http://www.cnblogs.com/bfyx/
HZHControls官网:http://www.hzhcontrols.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,
且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
GitHub:https://github.com/kwwwvagaa/NetWinformControl
码云:https://gitee.com/kwwwvagaa/net_winform_custom_control.git