作者kisha024 (4545454554)
看板C_Sharp
標題[問題] interface的修飾詞
時間Tue Aug 11 16:27:29 2015
各位好 如下一小段程式碼
修飾詞 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://webptt.com/m.aspx?n=bbs/C_Sharp/M.1439281655.A.5C0.html
1F:推 Litfal: 介面"成員"會自動是公用的 08/11 19:20
2F:→ Litfal: 原文: Interface "members" are automatically public, 08/11 19:21
3F:→ Litfal: 指的是介面裡面的事件、索引子、方法和屬性。 08/11 19:22
4F:推 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
{ }
5F:推 wulouise: 除了class裡面的class, C#好像不給人用private class吧? 08/15 18:20
6F:推 Litfal: 由於子類別會"繼承"父類別的成員,能訪問子類別,代表能訪 08/18 01:11
7F:→ Litfal: 問其所繼承的父類別,但若你父類別存取權限比較小,不就出 08/18 01:13
8F:→ Litfal: 現矛盾了? 08/18 01:14
對啊 所以interface換成class 會出錯是預料中的事
同理 我覺得interface也會出錯 但卻不是這樣
interface反而不會出錯 我想問的正是這個
※ 編輯: kisha024 (140.127.81.14), 08/19/2015 17:53:01
9F:推 Litfal: interface不會出錯是因為class並不依賴於interface阿 08/29 02:36
10F:→ Litfal: 而子類別是依賴於父類別的 08/29 02:37