接口
接口是完全抽象的一種約定。
接口就是用來實現的。
語法:
[訪問修飾符] interface 接口名
{
//接口成員定義
}
接口只有方法、屬性、索引和事件的聲明
接口是用來實現的,所有成員默認為public
interface IWalkable
{
//返回類型 方法名(參數列表);
void Walk();
}
interface ISoundable
{
void Sound();
}
abstractclassAnimal:IWalkable,ISoundable
{
publicabstractvoidWalk();
publicabstractvoidSound();
}
classPerson:Animal
{
publicoverridevoidWalk()
{
Console.WriteLine("我是一個人,用兩只腳在行走中&hell } publicoverridevoidSound() { Console.WriteLine("我是一個人,在說話,用到是語言哦"); } } classTeacher:Person { //老師,沒有重寫父類方法 } classStudent:Person { publicoverridevoidSound() { Console.WriteLine("我是學生重寫的Sound方法"); } //publicoverridevoidWalk() //sealed是密閉的意思,表示從這里開始不允許再被Student的子類重寫了 publicsealedoverridevoidWalk() { Console.WriteLine("我是學生重寫的Walk方法"); } } classChild:Student { publicoverridevoidSound() { Console.WriteLine("這是小孩的Sound"); } publicnewvoidWalk() { Console.WriteLine("小孩的Walk"); } } classCat:Animal { publicoverridevoidWalk() { Console.WriteLine("貓貓走貓步,好迷人……"); } publicoverridevoidSound() { Console.WriteLine("喵喵喵……"); } } classCar:IWalkable { publicvoidWalk() { Console.WriteLine("我是一輛卡車,走在大路上……"); } } classRadio:ISoundable { publicvoidSound() { Console.WriteLine("小喇叭,有開始廣播啦!!!"); } } classPRogram { staticvoidMain(string[]args) { IWalkable[]walkObjects={newPerson() ,newCat() ,newCar() ,newTeacher() ,newStudent() ,newChild()}; for(inti=0;i<walkObjects.Length;i++) { walkObjects[i].Walk(); } objectobj=newChild(); IWalkableiWalk=(IWalkable)obj; Childchi=(Child)obj; iWalk.Walk();//我是學生重寫的Walk方法 chi.Walk();//小孩的Walk //new為隱藏over重寫隱藏看類型重寫只管新爸 Console.WriteLine("/n----------------------/n"); ISoundable[]soundObjects={newPerson() ,newCat() ,newRadio() ,newTeacher() ,newStudent()}; for(inti=0;i<soundObjects.Length;i++) { soundObjects[i].Sound(); } Console.ReadKey(); } }
新聞熱點
疑難解答