C#基础10:接口

 

PS:注释和讲解部分在代码中

  • 虚方法等同于虚函数
  • 抽象方法等同于纯虚函数

1. 接口

什么是接口?

  • 当抽象类中所有的方法都是抽象方法的时候,这个时候可以把这个抽象类用另外一种形式来表现,这种形式叫接口
  • 接口可以当成特殊的类

接口的定义:

  • 接口使用interface关键字定义,不是class关键字
  • 有一个不成文的规定:一般接口在命名时需要在名字前面加个大写字母I
  • 接口中不能包含字段,可以包含抽象属性
  • 接口中定义的函数必须全是纯虚函数,但是不需要用abstract修饰
  • 接口中的成员不允许添加访问修饰符,默认都是public

接口的使用:

  • 接口当然不能被实例化,毕竟里面全是纯虚函数(抽象方法)
  • 一个类可以实现多个接口,被实现的多个接口之间用逗号分隔
  • 一个接口可以继承多个接口,接口之间也是用逗号分隔(这也是接口和类的区别之一,接口是可以多继承的,而类只能单继承)

你可能觉得:接口这个东西好像没什么用啊,其实确实目前看来没什么用,但是先了解就好了,等以后再说

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace C4_程序设计
{
    interface IText1
    {
        int GetVal { get; set; }        //抽象属性
        void Hello(string name);
    }
    interface IText2
    {
        void Hello(string name);
    }
    class Player: IText1,IText2         //必须实现接口中的所有抽象属性,抽象方法,才可以通过编译
    {                               //继承了两个接口,其中两个接口里面有着完全相同的抽象方法(非重载),可以当做合并成只有一个,或者你可以显式实现,显式实现方法如下↓
        int val;
        public int GetVal
        {
            get
            {
                return val;
            }
            set
            {
                if (value <= 0 || value >= 100)
                    val = -1;
                else
                    val = value;
            }
        }
        public void Hello(string name)
        {
            Console.WriteLine("Hello "+name+"!");
        }
        void IText2.Hello(string name)              //显式实现接口
        {
            Console.WriteLine("233333");
        }
    }
    class 接口
    {
        static void Main()
        {
            Player me = new Player();
            me.GetVal = 1000;
            me.Hello("world");      //Hello world!

            IText2 you = new Player();
            //you.GetVal = 1000;       错误,申明类(申明接口)IText2里面并没有“GetVal”的定义
            you.Hello("world");     //233333
        }
    }
}

附:VS中,类实现接口的快捷选项:

 

2. 虚方法,抽象类,接口三者语法对比

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值