總結: 多態是面向對象的核心.---------能夠理解為一個方法,多種實現, 在這里能夠用虛方法,抽象類,接口能夠實現多態 |
1.首先利用接口來實現多態:
接口相當于"功能,"接口能夠實現多繼承,分為 顯式實現接口和隱式實現接口 keyword為interface |
格式:
? ? interface ?接口名
{?
? ? ?string ......
? ? ?int ....
? ? ?void 方法名(); ?//定義方法
}
代碼演示樣例:(顯示實現接口)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace Interface_test
{class Program{static void Main(string[] args){Car c = new Car();c.Color = "黑色";c.Run();c.Stop();System.Console.ReadLine();}}interface Icar{void Run();void Stop();}interface ICarColor{string Color { get; set; }}class Car:Icar,ICarColor //定義Car類并繼承了多個接口{private string color;public string Color{get{return color;}set{color = value;}}public void Run() //實現接口方法{System.Console.WriteLine("{0}汽車啟動!", color);}public void Stop(){System.Console.WriteLine("{0}汽車停下!", color);}}
}
代碼演示樣例:(隱式實現接口)
class program
{?
? ? ?static void Main()
? ? ? ?{
? ? ? ? ? ? ? Car c=new Car();
? ? ? ? ? ? ? c.show(); ? ?//調用Car的show();
? ? ? ? ? ? ? Icar ic=c; ? //將Car 轉換為 Icar接口
? ? ? ? ? ? ? ic.show()
? ? ? ? ? ? ? System.Console.ReadLine();
? ? ? ? }
? ? ?interface Icar
? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? void show();
? ? ? ? ? ?}
? ? class Car:ICar
{
? ? ? ? ?public void show()
? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ? ? ? ?System.Console.WriteLine("運行show()");
? ? ? ? ? ? ? ?}
}
? ? ? }
2.其次利用抽象類實現多態:
抽象類是不詳細的,定義方法時僅僅須要定義抽象方法,抽象類不能實例化
格式:
public abstract class類名
{
? ? ? public string Name; //定義字段
? ? ? public void show()?
? ? ? ? {
? ? ? ? ?} ? ? ? ?//定義方法
? ? ?public abstract string Color { get;set} ?//定義抽象屬性
? ? ?public abstract void Run(); //定義抽象方法
? ? ?public abstrat void Stop();
}
代碼演示樣例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace Abstract_test
{class Program{static void Main(string[] args){Car c = new BMW();c.Name = "寶馬";c.Color = "紅色";c.show();c.Run();c.Stop();System.Console.ReadLine();}}public abstract class Car{public string Name;public void show(){System.Console.WriteLine("show方法:這是一輛"+Name);}public abstract string Color { get; set; } //定義抽象屬性public abstract void Run();public abstract void Stop();}public class BMW :Car
{private string color;public override string Color{get{return color;}set{color=value;}}public override void Run() //實現抽象類的抽象方法{System.Console.WriteLine("實現Run()方法:{0}{1}啟動", color, Name);}public override void Stop(){System.Console.WriteLine("實現Stop()方法:{0}{1}停止", color, Name);}
}
}
抽象類總結: 抽象類中能夠寫方法,也能夠定義抽象方法,在實現這個抽象類的類時,抽象方法須要實現
3.最后能夠利用虛方法來實現
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace Virtual_Test
{class Program{static void Main(string[] args){//虛方法:能夠被重寫 keyword: virtual//定義方式 public virtual string GetStrig(string name)//{ return name +"您好"; }//利用override重寫虛方法Car c = new Car();c.Name = "BMW";c.run();NewCar n = new NewCar();n.Name = "BMW";n.run();Console.ReadLine();}class Car{private string name;public string Name{get { return name; }set { name = value.Length > 0 ? value : name; }}public virtual void run(){Console.WriteLine("{0}汽車跑起來", name);}}class NewCar:Car //NewCar 繼承自Car{public override void run() //重寫虛方法{Console.WriteLine("新的{0}汽車跑起來", Name);}}}
}