|
10.1.5 使用接口作為返回值 同10.1.4小節(jié)中使用接口作為參數(shù)一樣,接口同樣可以作為返回值,本小節(jié)同樣通過(guò)一個(gè)實(shí)例演示接口的此種使用方法。 實(shí)例中定義了一個(gè)IShape接口,表示圖形,另外定義了一個(gè)Circle類(lèi),表示圓形,并實(shí)現(xiàn)了IShape接口,在MyClass類(lèi)中有一個(gè)MyOutput方法,該方法的返回值是IShape接口類(lèi)型的,實(shí)例代碼如下。 using System; using System.Collections.Generic; using System.Text; namespace Example10_9 { class Program { static void Main(string[] args) { //創(chuàng)建Circle類(lèi)變量circle,并使用其作為參數(shù)創(chuàng)建MyClass型變量myClass Circle circle = new Circle(35); MyClass myClass = new MyClass(circle); //獲取返回值,并輸出其面積Area屬性 Circle circle1 = (Circle)myClass.MyOutput(circle); Console.WriteLine(circle1.Area); Console.ReadLine(); } } /// <summary> /// IShape接口 /// </summary> interface IShape { /// <summary> /// Area屬性 /// </summary> int Area { get; set; } /// <summary> /// Caculate方法 /// </summary> void Caculate(); } /// <summary> /// Circle類(lèi)繼承IShape /// </summary> class Circle:IShape { /// <summary> /// area字段 /// </summary> int area = 0; /// <summary> /// 構(gòu)造函數(shù) /// </summary> /// <param name="m_Area">m_Area參數(shù)</param> public Circle(int m_Area) { area = m_Area; } #region IShape 成員 /// <summary> /// Area屬性 /// </summary> public int Area { get { return area ; } set { area = value; } } /// <summary> /// Caculate方法 /// </summary> public void Caculate() { Console.WriteLine("計(jì)算面積!"); } #endregion } /// <summary> /// MyClass類(lèi) /// </summary> class MyClass { /// <summary> /// 構(gòu)造函數(shù) /// </summary> /// <param name="m_shape">IShape型參數(shù)</param> public MyClass(IShape m_shape) { m_shape.Caculate(); Console.WriteLine(m_shape.Area); } /// <summary> /// MyOutput方法 /// </summary> /// <param name="m_shape">IShape接口類(lèi)型參數(shù)</param> /// <returns>IShape接口類(lèi)型返回值</returns> public IShape MyOutput(IShape m_shape) { m_shape.Area = 100; return m_shape; } } } 程序運(yùn)行結(jié)果如下。 計(jì)算面積! 35 100 通過(guò)結(jié)果可以看到,程序中可以很方便的使用作為返回值類(lèi)型的一種約束。不僅對(duì)返回值的類(lèi)型進(jìn)行了限定,還提供了一定的靈活性。即使程序進(jìn)行了更新,比如添加了其他類(lèi)型如正方形類(lèi),矩形類(lèi),只要這些類(lèi)繼承了IShape接口,即可方便的進(jìn)行使用。 |
|
|
來(lái)自: kittywei > 《111.38-c#類(lèi)》