前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >c#一个简单的实例告诉你,多继承还可以这么来

c#一个简单的实例告诉你,多继承还可以这么来

作者头像
冰封一夏
发布2019-09-11 15:34:50
1.6K0
发布2019-09-11 15:34:50
举报

我想多继承,要怎么搞???我想你一定会说“接口”,那么你有没有遇到这样的问题,你需要在一个类中继承另外2个类的所有方法,你要怎么做呢???难道要Coyp实现代码?No,往下看。。。

定义一个空接口比如

代码语言:javascript
复制
public interface I飞
{ }

然后将你需要继承的一个类修改为静态的,然后修改方法。

假如你的方法原来是这样的

代码语言:javascript
复制
  public  void 飞()
        {
            Console.WriteLine("开始飞了");
           
        }

那么就修改为这样

代码语言:javascript
复制
public static void 飞<T>(this T 飞实例) where T : I飞
{
Console.WriteLine("开始飞了");

}

然后你就可以继承了

代码语言:javascript
复制
  public class 苍蝇 : I飞
    {
        public virtual void 自我介绍()
        {
            Console.WriteLine("我是苍蝇");
        }

        public void 飞一个看看()
        {
            this.飞();           
        }
    }

这样你就不需要为继承接口Copy相同的代码了

全部代码:

代码语言:javascript
复制
 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 }

怎么样,是不是有所感觉了呢。。。是不是发现什么了呢。。。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-08-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档