C#接口

今天脑力消耗太大,头有点不舒服,感觉有些小疲惫啊!!!

 

 

今天主要讲解一下C#的接口,罗列如下:

1、 什么是C#的接口?

2、 C#接口的用途?

3、 C#接口的代码范例介绍

 

 

下班了、下班了、下班了…………………………………………………………努力学习分割线

 

 

第一个问题:

什么是C#接口?

(来个稍稍官方的解释)接口是一种用来定义程序的协议,它描述可属于任何类或结构的一组相关行为。接口可由方法、属性、事件和索引器或者4钟成员类型的任何组合构成,但不能包含字段。(尼玛,官方就是官方,菜鸟一枚,怎么理解!!)

 

接口可以简单说是:用来规范管理的设计方式。打个比喻,接口就是领导,领导下达一个命令开展一项旅游主题活动,领导下面的小兵们就是继承接口的类,来执行这个命令,因为每个人都有不同的思维,所以他们对这条命令的执行行为就不一样,有的人(继承接口的类)选择到日本旅游看妹纸(大家懂得),有的人选择到英国感受欧式建筑,这样每个继承接口的类就会产生不同的行为,但都是围绕一个主题(领导的命令)。也可以说,领导给个方向,但详细的事情要下面的小兵干,领导起到约束的作用。

 

一个类只能继承一个基类,所以C#不支持多重继承,但是客观世界出现多重继承的情况又比较多。为了避免传统的多重继承给程序带来的复杂性等问题,C# 提出了接口(接口简单不复杂)的概念,这样一个类可以继承多个接口,通过接口可以实现多重继承的功能。

 

接口类型似于抽象基类,继承接口的任何非抽象类型都必须实现接口的所有成员

不能直接实例化接口

接口可以包含事件,索引器,方法,和属性

接口不包含方法的实现(只定义,不实现)

类和结构可从多个接口继承

接口自身可从多个接口继承

 

第二个问题:

C#接口的用途?

接口就是定义一些规则,其实就是对行为(方法)的抽象;抽象类就是对类的抽象。

 

接口用来对实现它的类提供约束,接口就是一个契约,规范了接口实现者的行为。

 

接口有着很强的可扩展性,继承此接口就可以扩展接口中的方法(比如设计一个机械玩具车,留有遥控指挥的接口,现在不用,但是以后说不上它就有遥控指挥功能,这就提高了它的可可扩展性)。

 

接口与设计模式结合能降低耦合性,便于系统设计,便于团队分工协作,另外可以实现多重继承

 

缓冲内存与外设之间的速度,(2)满足不同种类的外设需求,(3)满足多设备的连接(4)实现不同类型的信号转换

 

抽象类里面可以有非抽象方法
但接口里只能有抽象方法

 

 

第三个问题:

C#接口的代码范例介绍

主要代码如下

using UnityEngine;
using System.Collections;
public class NewBehaviourScript :MonoBehaviour {
         voidStart ()
         {
                   IPrinta = new A();
                   IPrintb = new B();
                   IPrintc = new C();
 
                   a.Print();
                   b.Print();
                   c.Print();
         }
         interface   IPrint  //定义接口IPrint
         {  
                   void   Print();  //接口内定义抽象方法
         }  
         class   A  :   IPrint   //定义类A继承IPrint接口
         {  
                   public   void  Print()   //实现接口内的Print方法
                   {  
                            print("A");
                   } 
         }  
         class   B  :   IPrint  
         {  
                   public   void  Print()  
                   {  
                            print("B");
                   }  
         }  
         classC : IPrint  // 定义类C继承接口IPrint
         {
                   voidIPrint.Print()  //实现接口内的Print方法(注意和上面实现方法不同)
                   {
                            print("C");
                   }
         }
}

其他:

方法的重写: 定义同名且参数列表也相同的方法,并且父类中的方法用virtual进行修饰,子类中的方法用override进行了修饰。继承不能删除或减少方法。但是可以利用重写来更改继承方法

抽象方法和虚方法的区别?抽象 (abstract) 方法是没有实现的虚方法。抽象方法是只有定义、没有实际方法体的函数,它只能在抽象函数中出现,并且在子类中必须重写;虚方法则有自己的函数体,已经提供了函数实现,但是允许在子类中重写或覆盖。重写的子类虚函数就是被覆盖了。

 

base常用于,在派生类对象初始化时和基类进行通信base可以访问基类的公有成员和受保护成员,私有成员是不可访问的。

this指代类对象本身,用于访问本类的所有常量、字段、属性和方法成员,而且不管访问元素是任何访问级别。因为,this仅仅局限于对象内部,对象外部是无法看到的,这就是this的基本思想。另外,静态成员不是对象的一部分,因此不能在静态方法中引用this

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值