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

浙公网安备 33010602011771号