2014年1月25日 星期六

[C#] 強制介面實作 (遇到繼承多介面,而且介面間又有相同方法method())

可以的話,就盡量避免相同的方法出現...XD

當遇到繼承多介面,介面間又有相同方法時,如兩個方法都想要實做,就要強制介面實作。

怎麼做? 就是指定其中一個明確的方法界面,如 IA.method();

注意,強制實作介面不允許宣告時指定修飾詞,因為存取層級一律是public !!

  1. namespace 練習用
  2. {
  3.     class Program
  4.     {
  5.         static void Main(string[] args)
  6.         {
  7.                 ///實作多重介面 且有相同方法
  8.             ///
  9.             Messure mess = new Messure();
  10.             mess.length(5);
  11.             mess.area(5);
  12.  
  13.             Itri trimess = mess as Itri;    //as 會將mess轉型,如不能轉回傳null
  14.             trimess.length(5);
  15.             trimess.area(5);
  16.         }
  17.  
  18.         interface Isqure
  19.         {
  20.             void length(double L);
  21.             void area(double L);
  22.         }
  23.         interface Itri
  24.         {
  25.             void length(double L);
  26.             void area(double L);
  27.         }
  28.  
  29.         class Messure : Isqure, Itri
  30.         {
  31.             //實作正方形介面
  32.             public void length(double L)
  33.             {
  34.                 double length;
  35.                 length = 4 * L;
  36.                 Console.WriteLine("種方形周長 : {0}", length);
  37.             }
  38.             public void area(double L)
  39.             {
  40.                 double area;
  41.                 area = L * L;
  42.                 Console.WriteLine("正方形面積 : {0}", area);
  43.             }
  44.  
  45.             //實作三角形濟面 強制介面實作 不可以有指定修飾詞
  46.             void Itri.length(double L)
  47.             {
  48.                 double length;
  49.                 length = 3 * L;
  50.                 Console.WriteLine("種方形周長 : {0}", length);
  51.             }
  52.             void Itri.area(double L)
  53.             {
  54.                 double area;
  55.                 area = 0.5 * L * Math.Pow(30.5) * L / 2;
  56.                 Console.WriteLine("正方形面積 : {0}", area);
  57.             }
  58.  
  59.         }

沒有留言:

張貼留言