接口、抽象、迭代器跟java的說(shuō)法差不多,所以只作簡(jiǎn)單的解釋?zhuān)饕ㄟ^(guò)實(shí)例簡(jiǎn)單了解用法。
創(chuàng)新互聯(lián)建站專(zhuān)注于企業(yè)全網(wǎng)營(yíng)銷(xiāo)推廣、網(wǎng)站重做改版、臨高網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、html5、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性?xún)r(jià)比高,為臨高等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
接口:通過(guò)它可以實(shí)現(xiàn)多重繼承的功能。接口可以包含屬性、方法、索引器和事件,但只可以對(duì)其進(jìn)行定義而不能賦值。
簡(jiǎn)單聲明的接口:
interface IPeople{
string Name{get;set;}
void show();
}
使用Program類(lèi)實(shí)現(xiàn)接口:
class Program : IPeople{
string name="";
public string Name{get{return name;} set{name=value;}}
public show(){Console.Write("Name:"+Name);}
}
主程序,使用實(shí)例化Program對(duì)象:
Program pro = new Program();//實(shí)例化Program對(duì)象
IPeople ip = pro;//使用派生類(lèi)對(duì)象實(shí)例化接口
ip.Name = "hello";//為派生類(lèi)中的Name屬性賦值
ip.show();//調(diào)用派生類(lèi)中方法顯示屬性值
上例通過(guò)實(shí)例化的接口對(duì)象訪(fǎng)問(wèn)派生類(lèi)中的屬性和方法。另外,接口還可以多重繼承,使用時(shí)通過(guò)( ,)分隔:
interface IPeople{
string Name{get;set;}
}
interface IMan : IPeople{
void sex();
}
class Program :IPeople,IMan{
public void sex(){Console.Write("..."); }
}
//調(diào)用時(shí):
IMan man = pro;
man.sex();
顯式調(diào)用接口成員(類(lèi)實(shí)現(xiàn)兩個(gè)接口,兩個(gè)接口有相同的成員時(shí),作為區(qū)分使用):
interface ICal1{
int Add();
}
interface ICal2{
int Add();
}
class Calculate : ICal1,ICal2{
int ICal1.Add(){ //顯式接口成員實(shí)現(xiàn)
int x = 10; int y = 20; return x+y;
}
int ICal2.Add(){
int x = 10; int y = 20; int z = 30; return x+y+z;
}
}
//調(diào)用時(shí)
Calculate cal = new Calculate();
ICal1 cal1 = cal;
Console.WriteLine(cal.Add());//同理可以使用接口繼承類(lèi)ICal2的對(duì)象實(shí)例化接口
*********
抽象類(lèi)和抽象方法:
只要有一個(gè)方法聲明為抽象方法,這個(gè)類(lèi)也必須被聲明為抽象類(lèi)。抽象類(lèi)不能被密封。
抽象類(lèi)聲明:
public abstract class Test{
public int i;
public void method();
public abstract void abdMethod();//抽象方法
}
抽象類(lèi)和抽象方法的使用:
public abstract class People{
private string name="";
public string Name{
get{return name;} set{name = value;}
}
public abstract void show();//抽象方法
}
public class One :People{
//重寫(xiě)抽象類(lèi)中輸出信息的方法
public override void show(){Console.Write("...");}
}
//實(shí)現(xiàn)
One one = new One();//實(shí)例化派生類(lèi)
People p = one;//使用派生類(lèi)對(duì)象實(shí)例化抽象類(lèi)
p.Name = "hello";//使用抽象類(lèi)對(duì)象訪(fǎng)問(wèn)抽象類(lèi)中的姓名
p.show();//使用抽象類(lèi)對(duì)象調(diào)用派生類(lèi)中的方法
**********
密封類(lèi)和密封方法:(為避免濫用繼承而提出來(lái)的)
密封類(lèi)可以限制擴(kuò)展性,如果密封了某個(gè)類(lèi),則其他類(lèi)不能從該類(lèi)中繼承(所以抽象類(lèi)不能被密封);同理,密封的成員也如此。
密封類(lèi)的聲明:
public sealed class SealedTest{}
密封方法:
密封方法只能用于對(duì)基類(lèi)的虛方法進(jìn)行實(shí)現(xiàn),并提供具體的實(shí)現(xiàn),所以,聲明密封方法時(shí),sealed修飾符和override修飾符同時(shí)使用。
public class Base{
public virtual void show(){//定義一個(gè)虛方法
Console.WriteLine("這是基類(lèi)中的虛方法");
}
}
public sealed class Derive:Base{//從基類(lèi)派生一個(gè)密封子類(lèi)
//密封并重寫(xiě)基類(lèi)中的虛方法show()
public sealed override void show(){
base.show();//調(diào)用基類(lèi)的虛方法
Console.WriteLine("這是密封類(lèi)中重寫(xiě)后的方法");
}
}
密封類(lèi)和密封方法的使用:
public class People{
public virtual void show(){}//虛方法
}
public sealed class Student{
private string name ="";
public string Name{get{return name;} set{name = value;}}
//密封并重寫(xiě)基類(lèi)中的show()
public sealed override void show(){
Console.WriteLine("NAME: "+Name);
}
}
//調(diào)用
Student stu = new Student();//實(shí)例化密封類(lèi)對(duì)象
stu.Name = "hello";
stu.show();
迭代器:
用于返回相同類(lèi)型的值的有序序列的一段代碼。迭代器代碼使用yield return 語(yǔ)句依次返回每個(gè)元素,yield break語(yǔ)句將終止迭代。返回類(lèi)型必須是IEnumerable或IEnumerator中的一種。
創(chuàng)建迭代器:
public class Banks : IEnumerable
{
string[] arr = { "item1", "item2", "item3", "item4" };
public IEnumerator GetEnumerator()
{
for (int i = 0; i < arr.Length; i++)
{
yield return arr[i];
}
}
}
//調(diào)用
Banks banks = new Banks();
foreach (string str in banks)
{
richTextBox1.Text += str + "\n";
}
**********
分部類(lèi):(直接舉例比較容易理解)
partial class Part{//分部類(lèi)第一部分
public int add(int a, int b){return a+b;}
}
partial class Part{//分部類(lèi)第二部分
public int sub(int a, int b){return a-b;}
}
//調(diào)用時(shí)??梢灾婪植款?lèi)其實(shí)各部分就是組成一個(gè)類(lèi)
Part part = new Part();
part.add(1,2);part.sub(5,3);
********
泛型(和java的類(lèi)似,所以只是舉例):
public class Manager{
public static int Mana<T>(T[] items, T item){//創(chuàng)建泛型方法
}
}
//調(diào)用泛型方法
int i = Manager.Mana<int>(new int[]{1,2} , 2);
實(shí)例——利用接口實(shí)現(xiàn)選擇不同的內(nèi)容
interface ISelect{
void Speak(string str);
}
class Chinese :ISelect{
public void Speak(".....");
}
class Foreign :ISelect{
public void Speak(".....");
}
實(shí)例——通過(guò)重寫(xiě)抽象方法實(shí)現(xiàn)多態(tài)性
class Animal{
public string Run(){return "can run!";}
public abstract string Sound();//聲明抽象方法
}
class Dog : Animal{
public override string Sound(){
return "Wang!";
}
}
//該類(lèi)通過(guò)多態(tài)性輸出動(dòng)物的相關(guān)行為信息
public static class AnimalClass{
public static string AnimalSound(Animal an){
return an.Sound();
}
}
//在程序中調(diào)用時(shí)
Dog dog = new Dog();
AnimalClass.AnimalSound(dog);
網(wǎng)站題目:C#面向?qū)ο蠹夹g(shù)——接口、抽象、密封、迭代器、分部類(lèi)、泛型
地址分享:http://aaarwkj.com/article28/gjohcp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、網(wǎng)站導(dǎo)航、移動(dòng)網(wǎng)站建設(shè)、虛擬主機(jī)、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、定制開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)