访问修饰符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

 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  阅读(551)  评论(0)    收藏  举报