C#教程之介面用法
using System;
///
/// 建立一個獲取字串資料的介面
///
///
interface IGetData
{
//介面定義,不使用修飾符
string GetText();
void SetText(string str);
string Content { get;set;}
}
//建立一個獲取整數的介面
interface IGetInt
{
int GetInt();
void SetInt(int num);
int Integer { get;set;}
}
//介面的繼承
interface IGetDataExt : IGetData
{
string CopySelf();
}
//實現一個介面
public class Data : IGetData
{
//實現GetText成員函式
public string GetText()
{
return content;
}
//實現SetText成員函式
public void SetText(string str)
{
content = str;
}
//實現Content屬性,指定為public
public string Content
{
get
{
return content;
}
set
{
content = value;
}
}
private string content;
};
//實現兩個介面
public class StringInt : IGetData, IGetInt
{
//實現GetText成員函式
public string GetText()
{
return content;
}
//實現SetText成員函式
public void SetText(string str)
{
content = str;
}
//實現Content屬性,指定為public
public string Content
{
get
{
return content;
}
set
{
content = value;
}
}
//實現GetInt
public int GetInt()
{
return integer;
}
//實現SetInt
public void SetInt(int num)
{
integer = num;
}
//實現Integer屬性
public int Integer
{
set
{
integer = value;
}
get
{
return integer;
}
}
private int integer;
private string content;
}
//實現繼承的介面
public class DataExt : IGetDataExt
{
//實現GetText成員函式
public string GetText()
{
return content;
}
//實現SetText成員函式
public void SetText(string str)
{
content = str;
}
//實現Content屬性,指定為public
public string Content
{
get
{
return content;
}
set
{
content = value;
}
}
public string CopySelf()
{
return content + content;
}
private string content;
}
//override介面的方法
public class VirtualData : IGetData
{
//定義為一個虛方法
public virtual void SetText(string str)
{
Console.WriteLine("VirtualData.SetText");
content = str;
}
//非虛方法
public string GetText()
{
Console.WriteLine("Virtual.GetText");
return content;
}
public string Content
{
get
{
return content;
}
set
{
content = value;
}
}
private string content;
}
//override類實現
public class OverrideData : VirtualData
{
//override類的virtual方法
public override void SetText(string str)
{
Console.WriteLine("Override.SetText");
content = str;
}
//非virtual的方法
public new string GetText()
{
Console.WriteLine("Override.GetText");
return content;
}
private string content;
}
public class CallData
{
//Data的測試類
public static void test()
{
//測試一個介面的字串介面
Data data = new Data();
data.SetText("SetText");
Console.WriteLine(data.GetText());
data.Content = "Content";
Console.WriteLine(data.Content);
//測試兩個介面的介面
StringInt si = new StringInt();
si.SetText("StringInt.SetText");
si.SetInt(100);
Console.WriteLine("{0},{1}", si.GetText(), si.GetInt());
si.Content = "StrigInt.Content";
si.Integer = 200;
Console.WriteLine("{0},{1}", si.GetText(), si.GetInt());
//測試繼承介面
DataExt de = new DataExt();
de.SetText("DataExt.SetText");
de.CopySelf();
Console.WriteLine(de.Content);
//介面的強制轉化
StringInt SICast = new StringInt();
SICast.SetText("SICast.SetText");
SICast.SetInt(300);
IGetData DataCast = (IGetData)SICast;
Console.WriteLine(DataCast.Content);
IGetInt IntCast = (IGetInt)SICast;
Console.WriteLine(IntCast.Integer);
//is關鍵字的使用
if (SICast is IGetData)
Console.WriteLine("Implemented from IGetData,{0}",SICast.GetText());
else
Console.WriteLine("SICast is not implemented from IGetData");
//as關鍵字的使用
IGetData DataAS = SICast as IGetData;
if (DataAS != null)
Console.WriteLine("Implemented from IGetData,{0}", SICast.GetText());
else
Console.WriteLine("SICast is not implemented from IGetData");
//override與new在類中的使用
IGetData vd = new OverrideData();
//呼叫Override.SetText
vd.SetText("VirtualData.SetText");
//呼叫Virtual.Get
vd.GetText();
OverrideData d = new OverrideData();
//呼叫Override.SetText
od.SetText("OverrideData.SetText");
//呼叫Override.GetText
od.GetText();
}
};
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-566601/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Pandas高階教程之:GroupBy用法
- C# OpenFileDialog用法C#
- C# peek()的用法C#
- hyperf 教程之 hyperf-auth 高階用法
- C#中Enum的用法C#
- C# WebSocketSharp 框架的用法C#Web框架
- C#介面配置C#
- C# List常用函式用法C#函式
- C#中?和??及?:的用法C#
- 【C#】-Dictionary的詳細用法C#
- 登入介面(C#)C#
- C# 之 static的用法詳解C#
- C#中dynamic的正確用法C#
- C# Debug和release判斷用法C#
- C# Newtonsoft.Json 高階用法C#JSON
- C#內建介面:IEnumerableC#
- C#介面卡模式C#模式
- 瞭解下C# 介面(Interface)C#
- 關於C#中async/await的用法C#AI
- 【C#】反射的用法及效率對比C#反射
- c# 中常用的對集合的用法C#
- C# 8: 預設介面方法C#
- C#基礎之介面(6)C#
- c#中console.readline()用法怎麼用C#
- C# 中的 Mutex(互斥體)基礎用法C#Mutex
- C# 訊息 介面卡頓 介面程序 工作程序C#
- C#快速入門教程(16)—— 介面C#
- 快速掌握mongoDB(四)—— C#驅動MongoDB用法演示MongoDBC#
- .net 6 C#中System.IO.Path類的用法C#
- c#中介面卡模式詳解C#模式
- Unity3D C#建立COM介面Unity3DC#
- C#的IDisposable 介面和解構函式C#函式
- C# Winform程式介面優化例項C#ORM優化
- 一個簡單例子教會你C++動態庫的用法單例C++
- D社這款新作,教會了我平底鍋的正確用法
- 如何教會小白使用API介面獲取商品資料API
- 使用 go micro 搭建微服務介面的經驗教訓Go微服務
- api 介面欄位規範的問題,請教大家API
- 武漢Java培訓教程之JDBC中的常用介面和類JavaJDBC