访问修饰符modifier-C#, Java,TypeScript
C#(https://msdn.microsoft.com/zh-cn/library/ba0a1yw2.aspx)
public
:访问不受限制。
protected
:访问仅限于包含类或从包含类派生的类型。
Internal
:访问仅限于当前程序集。
protected internal:访问限制到当前程序集或从包含派生的类型的类别。
private
:访问仅限于包含类型。
一个成员或类型只能有一个访问修饰符,但使用 protected
internal
组合时除外。
命名空间上不允许使用访问修饰符。 命名空间没有访问限制。
根据出现成员声明的上下文,只允许某些声明的可访问性。 如果在成员声明中未指定访问修饰符,则使用默认的可访问性。
不嵌套在其他类型中的顶级类型的可访问性只能是 internal
或 public
。 这些类型的默认可访问性是 internal
。
嵌套类型是其他类型的成员,它们可以具有下表所示的声明的可访问性。
属于 | 默认的成员可访问性 | 该成员允许的声明的可访问性 |
enum |
public | 无 |
class |
private | public protected internal private protected internal |
interface |
public | 无 |
struct |
private |
public |
Java
(http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
http://www.runoob.com/java/java-modifier-types.html)
Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java支持4种不同的访问权限。
默认的,也称为 default,在同一包内可见,不使用任何修饰符。
私有的,以 private 修饰符指定,在同一类内可见。
共有的,以 public 修饰符指定,对所有类可见。
受保护的,以 protected 修饰符指定,对同一包内的类和所有子类可见。
我们可以可以通过以下表来说明访问权限:
修饰符 | 当前类 | 同一包内 | 子孙类 | 其他包 |
---|---|---|---|---|
public |
Y | Y | Y | Y |
protected |
Y | Y | Y | N |
default |
Y | Y | N | N |
private |
Y | N | N | N |
使用默认访问修饰符声明的变量和方法,对同一个包内的类是可见的。接口里的变量都隐式声明为public static final,而接口里的方法默认情况下访问权限为public。
TypeScript (https://tslang.cn/docs/handbook/classes.html)
在TypeScript里,成员都默认为 public。
当成员被标记成private
时,它就不能在声明它的类的外部访问。
protected
修饰符与private
修饰符的行为很相似,但有一点不同,protected
成员在派生类中仍然可以访问。