抽象類可以包含抽象方法,抽象屬性還有非抽象的成員
抽象類只能夠用作基類被其他類繼承,不能夠創(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ù)