學(xué)習(xí)C#接口重實(shí)現(xiàn)
派生類可以對基類中已經(jīng)定義的成員方法進(jìn)行重載。類似的概念引入到類對接口的實(shí)現(xiàn)中來,叫做接口的重實(shí)現(xiàn)(re-implementation)。繼承了C#接口實(shí)現(xiàn)的類可以對接口進(jìn)行重實(shí)現(xiàn)。這個(gè)接口要求是在類定義的基類列表中出現(xiàn)過的。對接口的重實(shí)現(xiàn)也必須嚴(yán)格地遵守***實(shí)現(xiàn)接口的規(guī)則,派生的接口映射不會(huì)對為接口的重實(shí)現(xiàn)所建立的接口映射產(chǎn)生任何影響。
下面的代碼給出了C#接口重實(shí)現(xiàn)的例子:
實(shí)際上就是:Control把IControl.Paint映射到了Control.IControl.Paint上,但這并不影響在MyControl中的重實(shí)現(xiàn)。在MyControl中的重實(shí)現(xiàn)中,IControl.Paint被映射到MyControl.Paint 之上。
在C#接口重實(shí)現(xiàn)時(shí),繼承而來的公有成員定義和繼承而來的顯式接口成員的定義參與到接口映射的過程。
這里,接口IMethods在Derived中的實(shí)現(xiàn)把接口方法映射到了Derived.F,
Base.IMethods.G, Derived.IMethods.H, 還有Base.I。前面我們說過,類在實(shí)現(xiàn)一個(gè)接口時(shí),同時(shí)隱式地實(shí)現(xiàn)了該接口的所有父接口。同樣,類在重實(shí)現(xiàn)一個(gè)C#接口時(shí)同時(shí),隱式地重實(shí)現(xiàn)了該接口的所有父接口。
這里,對IDerived的重實(shí)現(xiàn)也同樣實(shí)現(xiàn)了對IBase的重實(shí)現(xiàn),把IBase.F 映射到了D.F。對于C#接口重實(shí)現(xiàn)的實(shí)現(xiàn)就先介紹到這里。
【編輯推薦】