java嵌套类型 无法隐藏外层类型_嵌套类型(是什么??)

嵌套类型可以自由访问外层类型的成员,而不在乎那些成员是否私有。外层类型如果想访问嵌套类型,则要受到访问规则的限制。

不管外层是类还是结构,嵌套类型均默认为 private,但是可以设置为 public、protected internal、protected、internal 或 private。

不管外层类型是类型还是结构,嵌套类型均默认为 private,但是可以设置为 public、protected internal、protected、internal 或 private。

如果嵌套类型是private或protected的,嵌套类型对外层类型以外的其它类型是不可访问的,外层类型和在外层类型中的另一个嵌套类型却可以访问它,但是无法使用它的private或protected成员。如果嵌套类型中的成员设置为 public或者internal,那么外层类型和其它同一个外层类型声明的嵌套类型可以访问嵌套类型的这些成员,但这些成员对外层类型以外的类型依旧隐藏。

如果嵌套类型是public或者internal的,那么它将和一个普通的类型类

2e2e8c3e741e87eb578b229da420b61e.png似,其他类型可以使用MorthType.SonType的形式来正常的使用它,但这个嵌套类型依旧可以自由访问外层类型的所有成员。其实这在赋予一个类型强大的访问性的同时,却使一个类型的私有成员暴露出去,破坏了类型的封装性。此时外层类型功能上类型似一个命名空间,这也赋予类型一些命名空间的功能。

原例如下:

[开始引用]

嵌套类的静态构造函数不会随着外部类的触发而初始化。因此可以有效地避免创建时候初始化时间,当需要使用内嵌类的时候,嵌套类才开始初始化才开始初始化。

public class Outside

{

static Outside()

{

Console.WriteLine("Outside Inilizlized");

}

public void SayIt()

{

Nested.Run();

}

private class Nested

{

static Nested()

{

Console.WriteLine("Nested initilized");

}

public static void Run()

{

Console.WriteLine("Nested Run");

}

}

}

执行结果

Outside o = new Outside();//打印"Outside Inilizlized"

Console.ReadLine();

o.SayIt();//首先打印"Nested initilized" 再打印 "Nested Run"

Console.ReadLine();

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值