C#關於介面的顯示實現介面
阿新 • • 發佈:2020-12-07
介面interface
先回顧下介面的定義:介面語法與定義抽象類相同,但介面不允許提供任何成員的實現方法,也不能有建構函式、欄位和運算子過載,只允許包含方法成員(方法、屬性、索引器和事件的宣告)。
介面之間也可以繼承,繼承的介面可以新增屬於自己的方法,繼承介面的派生類需要實現介面內的所有方法。
那麼問題來了,當一個類同時繼承了兩個介面且兩個介面內有相同名字的方法,如類IGrammer3繼承自介面IGrammer1和介面IGrammer2,而IGrammer1和IGrammer2內同時有方法void Fun1(),此時可以同時實現或者分別使用顯示實現介面來實現介面內的方法:
同時實現:
interfaceIGrammer1 {void Fun1();} interface IGrammer2 {void Fun1();} class IGrammer3:IGrammer1,IGrammer2 { void Fun1() { Console.WriteLine(“此時是同時實現兩個介面的Fun1”); } }
這個時候呼叫類IGrammer3中的Fun1則直接使用父類或子類宣告的例項呼叫即可。
IGrammer3 g1 = new IGrammer3(); g1.Fun1();
顯示實現介面:
class IGrammer3:IGrammer1,IGrammer2 {void IGrammer1.Fun1() { Console.WriteLine(“此時實現的是IGrammer1的Fun1”); } void IGrammer2.Fun1() { Console.WriteLine(“此時實現的是IGrammer2的Fun1”); } }
這個時候呼叫不同的方法需要用各自的父類介面進行宣告:
IGrammer1 g1 = new IGrammer3(); g1.Fun1(); IGrammer2 g2 = new IGrammer3(); g2.Fun1();