[問題] interface的修飾詞

看板C_Sharp (C#)作者 (4545454554)時間10年前 (2015/08/11 16:27), 10年前編輯推噓5(505)
留言10則, 2人參與, 最新討論串1/1
各位好 如下一小段程式碼 修飾詞 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

08/11 19:20, , 1F
介面"成員"會自動是公用的
08/11 19:20, 1F

08/11 19:21, , 2F
原文: Interface "members" are automatically public,
08/11 19:21, 2F

08/11 19:22, , 3F
指的是介面裡面的事件、索引子、方法和屬性。
08/11 19:22, 3F

08/11 19:24, , 4F
而你指的 public interface,則是interface本身的存取範圍
08/11 19:24, 4F
謝謝 我知道 但我想問的是 譬如底下這樣寫不會錯 private interface Base { int P(); } public class Derive : Base { public int P() { return 10; } } 但是 如果interface換成class 如下 就會出錯 private class Base { } public class Derive : Base { }

08/15 18:20, , 5F
除了class裡面的class, C#好像不給人用private class吧?
08/15 18:20, 5F

08/18 01:11, , 6F
由於子類別會"繼承"父類別的成員,能訪問子類別,代表能訪
08/18 01:11, 6F

08/18 01:13, , 7F
問其所繼承的父類別,但若你父類別存取權限比較小,不就出
08/18 01:13, 7F

08/18 01:14, , 8F
現矛盾了?
08/18 01:14, 8F
對啊 所以interface換成class 會出錯是預料中的事 同理 我覺得interface也會出錯 但卻不是這樣 interface反而不會出錯 我想問的正是這個 ※ 編輯: kisha024 (140.127.81.14), 08/19/2015 17:53:01

08/29 02:36, , 9F
interface不會出錯是因為class並不依賴於interface阿
08/29 02:36, 9F

08/29 02:37, , 10F
而子類別是依賴於父類別的
08/29 02:37, 10F
文章代碼(AID): #1LoR7tN0 (C_Sharp)
文章代碼(AID): #1LoR7tN0 (C_Sharp)