委托
1、接口:
接口與抽象類一樣,也是表示某種規則,一旦使用了該規則,就必須實作相關的方法。對于C#語言而言,由于隻能繼承自一個父類,是以若有多個規則需要實作,則使用接口是個比較好的做法。
2、接口的定義
interface 接口名
{
方法聲明;
}
3、不同接口中若有多個相同名稱的方法,則需要顯式指定接口名,例如:
4、接口的使用
使用接口也可以實作多态。
代碼如下:
class Program
{
static void Main(string[] args)
{
//提供三個類,完成工資的計算
List<ICalu> list = new List<ICalu>();
list.Add(new Boss());
list.Add(new Clert());
list.Add(new Clert());
list.Add(new Customer());
foreach (ICalu emp in list)
{
emp.Calu(); //多态
}
}
}
class Boss : ICalu
{
public void Calu()
{
Console.WriteLine("計算老闆工資");
}
}
class Customer : ICalu
{
public void Calu()
{
Console.WriteLine("計算客戶工資");
}
}
class Clert : ICalu
{
public void Calu()
{
Console.WriteLine("計算職員工資");
}
}
interface ICalu
{
void Calu();
}
5、接口應用場合舉例
6、接口demo
using System;
using System.Collections.Generic;
using System.Linq; using System.Text;
namespace ConsoleApplication1 {
class Program {
static void Main(string[] args) {
List<IShow> list = new List<IShow>();
list.Add(new Map());
list.Add(new Voice());
list.Add(new Video());
list.Add(new ThreeD());
foreach(IShow ishow in list) {
ishow.Show(); }
}
}
interface IShow {
void Show(); }
public class Map:IShow {
public void Show()
{
Console.WriteLine("顯示圖檔"); }
}
public class Voice : IShow {
public void Show() {
Console.WriteLine("播放聲音"); }
}
public class Video : IShow {
public void Show()
{
Console.WriteLine("顯示視訊"); }
} public class ThreeD : IShow {
public void Show() {
Console.WriteLine("3D互動"); }
}
}
using System;
using System.Collections.Generic;
using System.Linq; using System.Text;
namespace ConsoleApplication2 {
public delegate void Mydel();
class Program {
static void Main(string[] args) {
Hospital h = new Hospital();
People LaoWang = new People();
LaoWang.OnEatTooMuch += new Mydel(h.Check);
LaoWang.Eat(10); }
}
class People {
public event Mydel OnEatTooMuch;
public void Eat(int i) {
if(i<3) {
Console.WriteLine("吃的太少"); }
else if(i==3) { Console.WriteLine("吃的正好"); }
else if (i <=5) { Console.WriteLine("吃的多了點"); }
else { if(OnEatTooMuch!=null)
{
OnEatTooMuch(); }
}
}
}
class Hospital {
public void Check() { Console.WriteLine("治療"); }
}
筆者原創!如果您覺得閱讀本文對您有幫助,請點一下“推薦”按鈕,您的“推薦”将是我最大的寫作動力!歡迎各位轉載,轉載請添加原部落格連接配接,否則保留追究法律責任的權利,謝謝!
YC.Boilerplate 快速開發架構交流,請加群:1060819005
區塊鍊交流請加QQ群:538327407(已滿),群2:135019400.
我的部落格位址:http://www.cnblogs.com/linbin524/