C#面:Static Nested Class 和 Inner Class 有什么不同

本文主要介绍了Java中的静态嵌套类(StaticNestedClass)与非静态嵌套类(InnerClass)的区别,前者只能访问外部类的静态成员,可独立实例化;后者可以访问所有成员,需通过外部类实例访问,强调了两者在访问权限和实例化方式上的差异。

(首先这个问法是存在问题的,但秉承尊重问题的原则做以下解答和解析)

1. 可以这样回答和记忆:

静态嵌套类(static Nested class):

  1. 定义在一个类里面,使用static关键字修饰。
  2. 外部类和静态嵌套类之间的访问是双向的,但受限于成员的访问修饰符。
  3. 而且它不持有外部类的引用,所以不能访问外部类的非静态成员。
  4. 静态嵌套类可以独立实例化,不用依赖于外部类实例。
  5. (所以)它常用于逻辑上属于外部类,但又不依赖于外部类实例的成员。
  6. 它还可以用于组织代码,提高代码的可读性,同时保持类的独立性。

内部类(Inner Class):

  1. 内部类定义在一个类里面,但它是非静态的。
  2. 它隐式持有外部类的引用,可以访问外部类的所有成员。
  3. 外部类可以通过内部类的类名.来访问内部类的成员。
  4. 内部类不能独立存在,它必须依赖于外部类实例。
  5. 内部类不能独立实例化,内部类的实例必须通过外部类的实例来创建。
  6. 内部类常用于定义仅在外部类作用域内有意义的类,如回调接口、事件处理器或适配器类。
  7. 内部类可以更好的封装并且隐藏实现细节。

2. 需要知道官方文档是如何说明的:

官方文档地址:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

那个那个鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值