c# Public? Private? protected? 比較各種修飾詞存取範圍

會寫程式的人大多都知道 Public, Private 這些存取修飾詞,突然有一天同事問我

要怎麼讓寫的 Class 只能在自己的 Namespace 被呼叫?

頓時突然覺得自己雖然懂這些存取修飾詞,但時常還是會忘記存取範圍,還是必須Google一下

為了之後快速複習,就寫了此篇文章,用表格方式呈現各個語言修飾詞的存取範圍

Public

C#, PHP, TypeScript, C++, JAVA

類別: 無限制存取
成員: 無限制存取

private

C#, PHP, TypeScript, C++, JAVA

類別: 只有自身Class可存取
成員: 只有自身Class可存取

protected

C#, PHP, TypeScript, C++, JAVA

類別: 自身Class, 被繼承Class皆可存取
成員: 自身Class 可存取, 被繼承Class 無法存取

internal

C#

類別: 相同命名空間 (相同dll存取) 可存取
成員: 只有自身Class可存取

protected internal

C#

類別: 自身Class, 被繼承Class 皆可存取
成員: 自身Class, 相同命名空間, 被繼承Class 皆可存取

private protected

C# 7.2

類別: 自身Class, 被繼承Class 皆可存取
成員: 自身Class 可存取, 被繼承Class無法存取

package

JAVA

類別: 自身Package 可存取
成員: 自身Package 可存取

字母大小寫

GoLang

大寫相當 public
小寫相當 private

C# 存取範圍修飾詞 Access modifiers

Package 組件內部組件 Inside Assembly外部組件 Outside Assembly
修飾詞基礎類別繼承類別繼承成員其他類別繼承類別繼承成員其他類別
public
protected internal
internal
protected
private
private protected
(C# 7.2)
C# 存取範圍修飾詞 Access modifiers

各語言修飾詞

C#PHPTypeScriptC++JAVAGoLang
public字母大寫
private字母小寫
protected
internal
protected internal
private protected
package
各語言修飾詞

簡單繪製 C# Access modifiers 供大家參考

訂閱
通知
guest
1 留言
預約回饋
查看所有留言
91
Guest
91
10 數月 之前

整理的非常清楚!!謝謝!!