看板 C_Sharp 關於我們 聯絡資訊
各位好 如下一小段程式碼 修飾詞 interface Base { int P(); } public class Derive : Base { public int P() { return 10;} } https://msdn.microsoft.com/zh-tw/library/ms173156%28v=vs.120%29.aspx 這裡寫 "介面成員會自動是公用的,因此,它們不能包含任何存取修飾詞。" 所以int P(); 並沒有任何修飾詞 因為class Derive的修飾詞是public 所以 我原本以為interface Base的修飾詞也要是public才行 但我發現interface Base沒有修飾詞 或者修飾詞是protected或private 也都不會出錯 想請問 當interface的修飾詞是protected或private 背後的涵義是什麼? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.127.81.14 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1439281655.A.5C0.html
Litfal: 介面"成員"會自動是公用的 08/11 19:20
Litfal: 原文: Interface "members" are automatically public, 08/11 19:21
Litfal: 指的是介面裡面的事件、索引子、方法和屬性。 08/11 19:22
Litfal: 而你指的 public interface,則是interface本身的存取範圍 08/11 19:24
謝謝 我知道 但我想問的是 譬如底下這樣寫不會錯 private interface Base { int P(); } public class Derive : Base { public int P() { return 10; } } 但是 如果interface換成class 如下 就會出錯 private class Base { } public class Derive : Base { }
wulouise: 除了class裡面的class, C#好像不給人用private class吧? 08/15 18:20
Litfal: 由於子類別會"繼承"父類別的成員,能訪問子類別,代表能訪 08/18 01:11
Litfal: 問其所繼承的父類別,但若你父類別存取權限比較小,不就出 08/18 01:13
Litfal: 現矛盾了? 08/18 01:14
對啊 所以interface換成class 會出錯是預料中的事 同理 我覺得interface也會出錯 但卻不是這樣 interface反而不會出錯 我想問的正是這個 ※ 編輯: kisha024 (140.127.81.14), 08/19/2015 17:53:01
Litfal: interface不會出錯是因為class並不依賴於interface阿 08/29 02:36
Litfal: 而子類別是依賴於父類別的 08/29 02:37