返回顶部
首页 > 资讯 > 精选 >C#接口怎么声明和实现
  • 373
分享到

C#接口怎么声明和实现

2023-06-18 00:06:53 373人浏览 薄情痞子
摘要

这篇文章主要讲解了“C#接口怎么声明和实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#接口怎么声明和实现”吧!学习C#接口:声明接口声明接口在语法上和声明抽象类完全相同,例如这里有一个

这篇文章主要讲解了“C#接口怎么声明和实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#接口怎么声明和实现”吧!

学习C#接口:声明接口

声明接口在语法上和声明抽象类完全相同,例如这里有一个银行账户的接口:

public interface IBankAccount  {      void PayIn(decimal amount);      bool Withdraw(decimal amount);       decimal Balance      {          get;      }  }

注意:接口中只能包含方法、属性、索引器和事件的声明。不允许声明成员上的修饰符,即使是pubilc都不行,因为接口成员总是公有的,也不能声明为虚拟和静态的。如果需要修饰符,***让实现类来声明。

学习C#接口:使用C#接口的例子

这是书上的一个简单的例子,但足以说明接口的使用方法。

一个银行账户的接口,两个不同银行账户的实现类,都继承于这个接口。接口声明如上。下面是两个账户类:

class SaverAccount : IBankAccount  {      private decimal balance;       public decimal Balance      {          get           {              return balance;              }      }       public void PayIn(decimal amount)      {          balance += amount;      }       public bool Withdraw(decimal amount)      {          if (balance >= amount)          {              balance -= amount;              return true;          }          Console.WriteLine("Withdraw failed.");          return false;      }       public override string ToString()      {          return String.FORMat("Venus Bank Saver:Balance={0,6:C}", balance);      }  }   class GoldAccount : IBankAccount  {      private decimal balance;       public decimal Balance      {          get           {              return balance;          }      }       public void PayIn(decimal amount)      {          balance += amount;      }       public bool Withdraw(decimal amount)      {          if (balance >= amount)          {              balance -= amount;              return true;          }          Console.WriteLine("Withdraw failed.");          return false;      }       public override string ToString()      {          return String.Format("Jupiter Bank Saver:Balance={0,6:C}", balance);      }  }

可见,这两个实现类多继承了IBankAccount接口,因此它们必须要实现接口中的所有声明的方法。要不然,编译就会出错。让我们来测试一下,下面是测试代码:

static void Main(string[] args)  {      IBankAccount venusAccount = new SaverAccount();      IBankAccount jupiterAccount = new CurrentAccount();      venusAccount.PayIn(200);      jupiterAccount.PayIn(500);      Console.WriteLine(venusAccount.ToString());      jupiterAccount.PayIn(400);      jupiterAccount.Withdraw(500);      jupiterAccount.Withdraw(100);      Console.WriteLine(jupiterAccount.ToString());   }

请注意开头两句,我们把它们声明为IBankAccount引用的方式,而没有声明为类的引用,为什么呢?因为,这样我们就可以让它指向执行这个接口的任何类的实例了,比较灵活。但这也有个缺点,如果我们要执行不属于接口的方法,比如这里重载的ToString()方法,就要先把接口的引用强制转换成合适的类型了。

接口的继承

接口也可以彼此继承,就象类的继承一样。比如我们又声明一个接口ITransferBankAccount,它继承于IBankAccount接口。

interface ITransferBankAccount : IBankAccount   {      bool TransferTo(IBankAccount destination, decimal amount);  }

在这个接口中,又新增加了一个方法TransferTo(),所以如果我们要写一个类从ITransferBankAccount继承的话,就必须要实现IBankAccount和ITransferBankAccount两个接口所有的方法声明。即:

class CurrentAccount : ITransferBankAccount  {      private decimal balance;       public decimal Balance      {          get         {              return balance;          }      }       public void PayIn(decimal amount)      {          balance += amount;      }       public bool Withdraw(decimal amount)      {          if (balance >= amount)          {              balance -= amount;              return true;          }          Console.WriteLine("Withdraw failed.");          return false;      }       public override string ToString()      {          return String.Format("Jupiter Bank Saver:Balance={0,6:C}", balance);      }       public bool TransferTo(IBankAccount destination, decimal amount)      {          if (Withdraw(amount))          {              destination.PayIn(amount);              return true;          }          else         {               return false;          }      }  }

使用学习C#接口应注意几个问题:

C#接口是独立于类来定义的。这与 c++模型是对立的,在 C++中接口实际上就是抽象基类。

接口和类都可以继承多个接口。

类可以继承一个基类,接口根本不能继承类。这种模型避免了 C++的多继承问题,C++中不同基类中的实现可能出现冲突。因此也不再需要诸如虚拟继承和显式作用域这类复杂机制。C#的简化接口模型有助于加快应用程序的开发

一个接口定义一个只有抽象成员的引用类型。C#中一个接口实际所做的,仅仅只存在着方法标志,但根本就没有执行代码。这就暗示了不能实例化一个接口,只能实例化一个派生自该接口的对象。

接口可以定义方法、属性和索引。所以,对比一个类,接口的特殊性是:当定义一个类时,可以派生自多重接口,而你只能可以从仅有的一个类派生。

感谢各位的阅读,以上就是“C#接口怎么声明和实现”的内容了,经过本文的学习后,相信大家对C#接口怎么声明和实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: C#接口怎么声明和实现

本文链接: https://lsjlt.com/news/294420.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C#接口怎么声明和实现
    这篇文章主要讲解了“C#接口怎么声明和实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#接口怎么声明和实现”吧!学习C#接口:声明接口声明接口在语法上和声明抽象类完全相同,例如这里有一个...
    99+
    2023-06-18
  • C#中怎么声明一个COM接口
    这篇文章给大家介绍C#中怎么声明一个COM接口,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。COM 接口在 C# 中表示为具有 ComImport 和 Guid 属性的接口。它不能在其基接口列表中包含任何接口,而且必须...
    99+
    2023-06-17
  • java接口怎么声明
    在Java中,可以使用`interface`关键字声明接口。接口的声明方式如下所示:```javapublic interface ...
    99+
    2023-09-23
    java
  • go怎么声明空接口
    在Go语言中,可以使用`interface{}`来声明空接口。下面是一个示例代码: package main import "fm...
    99+
    2023-10-25
    go
  • C#中怎么实现类型声明
    本篇文章给大家分享的是有关C#中怎么实现类型声明,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C#类型声明定义新的引用类型。一个类可以从另一个类继承,并且可以实现多个接口。类成...
    99+
    2023-06-17
  • Gointerface接口声明实现及作用详解
    目录什么是接口接口的定义与作用接口的声明和实现接口的声明接口的实现接口类型断言空接口接口实际用途通过接口实现面向对象多态特性通过接口实现一个简单的 IoC (Inversion of...
    99+
    2023-03-14
    Go interface接口声明实现 Go interface
  • C#中怎么声明变量和常量
    在C#中声明变量和常量的方式如下: 声明变量: // 声明一个整型变量 int num; // 声明并初始化一个字符串变量 str...
    99+
    2024-03-06
    C#
  • C#怎么实现InterfaceImplementer.cs接口
    这篇“C#怎么实现InterfaceImplementer.cs接口”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#怎么实...
    99+
    2023-06-17
  • C#中怎么实现接口和抽象类
    在C#中,可以通过以下方式来实现接口和抽象类: 接口: interface IExampleInterface { void...
    99+
    2024-04-03
    C#
  • html5的doctype声明怎么实现
    这篇文章主要介绍“html5的doctype声明怎么实现”,在日常操作中,相信很多人在html5的doctype声明怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ht...
    99+
    2024-04-02
  • PHP中怎么使用class来声明一个接口
    在PHP中,可以使用关键字interface来声明一个接口。接口是一种抽象的类,其中定义了一组方法但不包含方法的实现。 下面是一个示...
    99+
    2024-03-04
    PHP
  • C#怎么声明enum变量
    这篇文章主要介绍“C#怎么声明enum变量”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C#怎么声明enum变量”文章能帮助大家解决问题。声明 enum 变量声明枚举的一般语法:...
    99+
    2023-06-17
  • C#中怎么声明数组
    今天就跟大家聊聊有关C#中怎么声明数组,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C#声明数组时,方括号([])必须跟在类型后面,而不是标识符后面。在C#中,将方括号放在标识符后是...
    99+
    2023-06-17
  • C#中的委托怎么声明和使用
    这篇“C#中的委托怎么声明和使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#中的委托怎么声明和使用”文章吧。如果要给方...
    99+
    2023-06-30
  • C#怎么实现多个接口
    这篇文章主要讲解了“C#怎么实现多个接口”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#怎么实现多个接口”吧!学习C#语言时,经常会遇到C#实现多个接口问题,这里将介绍C#实现多个接口问题...
    99+
    2023-06-17
  • VB.NET中怎么实现变量声明
    VB.NET中怎么实现变量声明,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。用户可以使用一般的声明的描述来声明一个对象变量,但是必须把VB.NET变量声明为Object或者...
    99+
    2023-06-17
  • java接口有效的声明方法是什么
    在Java中,接口的有效声明方法是使用`interface`关键字定义接口,并在接口中声明方法,方法没有具体的实现。以下是一个有效的...
    99+
    2023-10-10
    java
  • c++局部变量怎么声明
    在C++中,局部变量声明的语法如下: 数据类型 变量名; 其中,数据类型表示变量的类型,可以是C++内置的数据类型,也可以是自定义...
    99+
    2024-02-29
    c++
  • C#中怎么实现多个接口
    今天就跟大家聊聊有关C#中怎么实现多个接口,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。为了C#实现多个接口,我们可以从接口派生类。这样的派生类必须为所有接口的方法提供实现,除非派生...
    99+
    2023-06-17
  • C#覆盖虚接口怎么实现
    本篇内容主要讲解“C#覆盖虚接口怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#覆盖虚接口怎么实现”吧!有时候我们需要表达一种抽象的东西,它是一些东西的概括,但我们又不能真正的看到它成...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作