會寫程式的人大多都知道 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# | PHP | TypeScript | C++ | JAVA | GoLang | |
---|---|---|---|---|---|---|
public | 字母大寫 | |||||
private | 字母小寫 | |||||
protected | ||||||
internal | ||||||
protected internal | ||||||
private protected | ||||||
package |
整理的非常清楚!!謝謝!!