访问修饰符modifier-C#, Java,TypeScript

C#(https://msdn.microsoft.com/zh-cn/library/ba0a1yw2.aspx)

public:访问不受限制。

protected:访问仅限于包含类或从包含类派生的类型。

Internal:访问仅限于当前程序集。

protected internal:访问限制到当前程序集或从包含派生的类型的类别。

private:访问仅限于包含类型。

一个成员或类型只能有一个访问修饰符,但使用 protected internal 组合时除外。

命名空间上不允许使用访问修饰符。 命名空间没有访问限制。

根据出现成员声明的上下文,只允许某些声明的可访问性。 如果在成员声明中未指定访问修饰符,则使用默认的可访问性。

不嵌套在其他类型中的顶级类型的可访问性只能是 internalpublic。 这些类型的默认可访问性是 internal

嵌套类型是其他类型的成员,它们可以具有下表所示的声明的可访问性

属于 默认的成员可访问性 该成员允许的声明的可访问性

enum

public

class

private public

 protected

 internal

 private

 protected internal

interface

public

struct

private

public

 internal

 private

 

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成员在派生类中仍然可以访问。

posted @ 2017-04-06 14:18  Jane&Coding  阅读(511)  评论(0)    收藏  举报