C#抽象方法和多態(tài)還有委托

抽象類可以包含抽象方法,抽象屬性還有非抽象的成員

抽象類只能夠用作基類被其他類繼承,不能夠創(chuàng)建抽象類的實例,即對抽象類的使用new操作時錯誤惡的

抽象方法當(dāng)中可以定義抽象屬性

抽象屬性不提供屬性訪問器的實現(xiàn),方位其的實現(xiàn)由派生類完成

重載的抽象發(fā)個hi如

public override 方法名([參數(shù)列表])

{方法的實現(xiàn)]}

如果派生類當(dāng)中沒有對抽象方法的進(jìn)行重寫,則派生類仍然時派生類,必須聲明為抽象

public absatc class shape{

procted double radius;

public shape(double r){

radius=r;

}

public abstract double cubage();

}


public class globe:shape{

public globe(double r):base(r){

}

public override double cubage()

{

return Math.PI*Radius*radius*radius*4.0/3;

}

public override string ToString(){
return string.Format("球體的體積為:{0}",cubage());

}}

public class cone:shape{

pruvate double height;

public cone(double r,double h):base(r0{height=h;}

public override double cubage(){

return Math.PUI*radiu*radius*height/3;

}

public ovrride string ToString(){
return string.Format("圓錐體的體積是:{0}",cubage();


sealed聲明的類稱為密封類

密封類時不能被繼承的類,不能夠作為基類,與抽象類相反

使用sealed修飾的方法稱為密封方法

密封的方法不能再派生類當(dāng)中覆蓋,即用sealed聲明的方法不能夠被改變

所有的派生類使用相同的方法

class A{}

sealed class B:A

{}

class C:B

{}

C類的定義時錯誤惡的

基類的密封的方法不能再派生類當(dāng)中覆蓋

聲明為private,statci的方法也隱含sealed所以不能再派生類當(dāng)中覆蓋

同時聲明為override和sealed的派生類的方法可以覆蓋基類的方法,但是不能在繼承層次的下層派生類當(dāng)中覆蓋

接口是一種引用類型,利用接口可以為不同的類提供通用的共呢個

節(jié)后只提供抽象的成員,不提供具體的實現(xiàn),成員功能由實現(xiàn)接口的類完成的

接口只允許聲明屬性,事件,索引器,不餓能聲明數(shù)據(jù)成員,靜態(tài)成員,構(gòu)造函數(shù),析構(gòu)函數(shù)

接口成員不能夠使用Statci,absrtact,override,virtual修飾符,使用new修飾符系統(tǒng)會給出警告提示不需要關(guān)鍵字new

接口成員的

接口允許多繼承

接口成員包括從基接口繼承的成員和接口本身聲明的成員

接口修飾符:public ,procted,internal,private控制接口的訪問能力,new是在嵌套接口當(dāng)中允許存在的修飾符,說明用相同的抿成隱藏一個繼承的成員

接口可以繼承,

interface ID:IA,IB,IC{

}

public interface IPortA{

void DisplayStringA();

}

public interface IPortB:POrtA{

void DisplayeStringB();

}

對于接口當(dāng)中存在同名的成員,采用顯式實現(xiàn)接口的方法

接口名。成員名

顯式實現(xiàn)的成員必須通過所屬的接口來調(diào)用


((接口名)類對象名).方法名

運算符的重載

public static 返回值類型oeprator 運算符(【形參表列】){

函數(shù)體

}

public static ComplexNumber operator +(ComplexNumber x,ComplexNumber y){
return new ComplexNumber(x.real+y.real,x.imaginary+y.imaginary);

}

static void main(string[]args){
int[]array-{1,2,3,4,5,6};

int index;

try{

Console.WriteLine("請輸入下標(biāo)");

index=Convert.ToInt32(Console.ReadLine());

if(index<0||index>array.Length-1)

throw new indexOutOfRangeException("下標(biāo)應(yīng)該在0到"+Convert.ToString(array.Lnegth-1)+"之間");

Console.WritelIne("數(shù)組再第{0}個元素為:{1}",index,array[index]);

}

catch(IndexOutOfRangeException e){
Console.WriteLine(e.Message);

]

}

委托就是將方法作為方法的參數(shù)

public delegate void GreetingDelegate(string name);

public delegate void GreetingDelefate(string name);

委托是一個類,他定了方法的類型,使得可以將方法作為另一個方法的參數(shù)進(jìn)行傳遞

public delegate void MyDelegate*string s);

委托對象可以通過使用new關(guān)鍵字來創(chuàng)建,且與一個特定的方法有關(guān)

當(dāng)創(chuàng)建委托的時候,傳遞到new語句的參數(shù)就像方法調(diào)用一樣稅額,但是不帶有參數(shù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容