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 }

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

时间: 2024-11-13 09:25:19

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

原生Ajax用法——一个简单的实例

Ajax全名(Asynchronous(异步) JavaScript and XML )是可以实现局部刷新的 在讲AJax之前我们先用简单的实例说一下同步和异步这个概念 /*异步的概念(就是当领导有一个吩咐  让秘书去叫小李,秘书就去叫小李了,而领导接着做自己的事),而不是什么也不做就等着秘书告诉老板小李来了 具体的异步概念是这样的: 就是后台与界面可以进行数据交互,而界面则可以继续保持一直跟用户交互而不受影响.反之就是同步的概念喽*/ /*领导就相当于(客户端,浏览器) 而秘书就相当于XHR(

第一次写博客,一个简单的实例:java读写txt文件,希望这是一个好的开始。

作为一名初级开发人员,每天都是在网络上寻找别人的代码,然后修修改改应用到项目中,不知不觉间,自己真的成为代码的搬运工了. 编程的乐趣是在浩瀚的知识海洋中找到自己想要的代码,共享信息,方便自己,也方便别人. 下面的代码是一个简单的java代码读取txt文件的实例.虽然简单,但是可以为零基础的新手一个入门例子. package javatest; import java.io.BufferedReader;import java.io.File;import java.io.FileInputStr

大话JS面向对象之扩展篇 面向对象与面向过程之间的博弈论(OO Vs 过程)------(一个简单的实例引发的沉思)

一,总体概要 1,笔者浅谈 我是从学习Java编程开始接触OOP(面向对象编程),刚开始使用Java编写程序的时候感觉很别扭(面向对象式编程因为引入了类.对象.实例等概念,非常贴合人类对于世间万物的认知方式和思考方式.对于复杂的事物,人类是如何去认识.归纳.总结的?面向对象式编程就是在努力回答这个问题,而答案的核心就是两个字:抽象.所以面向对象式编程特别适合处理业务逻辑,因此被广泛应用于目前的软件开发当中.因为我们开发软件就是为了解决问题,面向对象式编程符合人类对于“问题”的认知方式),因为我早

爬虫基础以及一个简单的实例

最近在看爬虫方面的知识,看到崔庆才所著的<Python3网络爬虫开发实战>一书讲的比较系统,果断入手学习.下面根据书中的内容,简单总结一下爬虫的基础知识,并且实际练习一下.详细内容请见:https://cuiqingcai.com/5465.html(作者已把书的前几章内容对外公开). 在写爬虫程序之前需要了解的一些知识: 爬虫基础:我们平时访问网页就是对服务器发送请求(Request),然后得到响应(Response)的一个过程.爬虫通过模仿浏览器,对网页进行自动访问.需要知道请求包含哪些内

ubuntu 中安装memcache,并给出一个简单的实例&#183;

Memcache分为两部分,Memcache服务端和客户端.Memcache服务端是作为服务来运行的,所有数据缓存的建立,存储,删除实际上都是在这里完成的.客户端,在这里我们指的是PHP的可以调用的扩展. 1)安装Memcache服务端 sudo apt-get install memcached 安装完Memcache服务端以后,我们需要启动该服务: memcached -d -m 128 -p 11211 -u root 这里需要说明一下memcached服务的启动参数: -p 监听的端口

在vue中使用vuex 一个简单的实例

1.安装vuex:npm install vuex --save 2.在main.js文件中引入vuex (请忽略其它代码) 3.建一个vuex文件夹,然后在建一个store.js(这两个文件名字可以随便定义) 代码如下 4.在页面中使用这个参数 5.改变参数的值,使用commit方法,它带两个参数,第一个是store.js里面setMessageNum方法,第二个是新的值(参数可选) 原文地址:https://www.cnblogs.com/Mrrabbit/p/8312721.html

学习 WebService 第三步:一个简单的实例(SoapUI测试REST项目)

原文地址:SOAPUI测试REST项目(六)--REST服务和WADL ↑↑↑ 原文用的SoapUI,2018-3-19时,这个软件已经更名为ReadyAPI(集成了SoapUI),因此下文中我重新截屏. 本文介绍如何从零开始通过WebService的REST服务URL建立SoapUI Project,查看Request/Response,及WADL. 更多关于SoapUI的软件使用方法,请参阅其他文档. 1. 新建Workspace,空Project 菜单 → Workspace → New

spring-dm 一个简单的实例

spring-dm2.0  运行环境,支持JSP页面 运行spring web 项目需要引用包

Ajax学习(二)—— 一个简单的Ajax实例

通过上篇博客认识Ajax之后,我们通过一个简单的实例来消化消化理论知识,一睹Ajax的庐山真面目. 1.实例功能: 当用户输入用户名,文本框失去焦点后,通过异步调用来判断该用户名是否已经存在.若存在,则在上图中红框处显示提示.当用户名可用时,提交按钮变为可用状态. 2.设计Html页面: <span style="font-family:SimSun;font-size:18px;"><strong><span style="font-famil