java中的内部类可以无条件地使用外部类的资源,这是怎么一回事呀?
在内部类创造时,会自动地拥有一个外部类的引用,这个是编译器给它创建的,当某个外部类的对象要创建一个内部类对象时,此内部类对象会秘密地获得一个指向外围类对象的引用(下面的图会看到的)。当要访问外部类的成员时,就会用这个引用来选择外部的成员,这个是一个很有趣的事情。看下面的例子。
public class A {
private int OuterValue = 12 ;
class InnerClass1{
private int value = 0 ;
public void getValue(){
value = OuterValue ;
}
}
}
看看它被编译后吧
A类:(这里创建了一个static int access$000(A)的静态函数,是为了对内部类服务的。)
A类的内部类(创建了一个final A this$0,这个是编译器自动创建的,在构造方法那里还给它赋值了,那个value要用到外部的值时,这里直接用了类的A.access$000这个静态方法,这里的参数直接用了那个this$0了。)
- 大小: 38.1 KB
- 大小: 40.1 KB
分享到:
相关推荐
4. **内联(inline)函数定义**:无论是在类的外部还是内部定义的内联函数都具有内部链接。 5. **类的定义**:类的定义本身不产生外部符号,因此具有内部链接。 6. **命名空间中的`const`常量定义**:这些常量只在...
这使得接口成为连接内部类和外部类的桥梁,帮助实现特定的交互逻辑。 总结一下,内部类、匿名内部类和内部接口在Java编程中提供了一种强大的工具,它们可以帮助我们更好地组织代码,实现封装和模块化。在Android...
内部类是定义在一个类内部的类,它可以访问外部类的所有成员,包括私有成员。内部类主要有四种类型:成员内部类、局部内部类、匿名内部类和静态内部类。内部类可以提供更好的封装性和代码组织,常用于实现事件监听器...
为了实现这一目标,我们可以通过定义一个`ConnectPool`类来管理一系列数据库连接,并且在这个类中定义一个内部类`PoolConn`来表示每个数据库连接的状态信息。 首先定义一个接口`Pool`,用来规定数据库连接池应该...
当我们在文件中,如果是vue页面中的内部跳转,可以用this.$router.push()实现,但是如果我们还用这种方法跳到外部链接,就会报错,我们一看链接的路径,原来是我们的外部链接前面加上了http://localhost:8080/#/这一...
3. **链接到外部类**: - 内部类可以访问外部类的所有成员,包括实例变量和方法,这使得内部类能够紧密地与外部类相关联。 - 使用 `.this` 指代当前对象,对于内部类来说,`.OuterClass.this` 表示当前外部类对象...
2. **代码封装**:内部类能更好地隐藏实现细节,保持外部接口简洁。这使得代码更易于理解和维护。 3. **减少权限需求**:如果`BroadcastReceiver`仅用于处理与宿主组件相关的事件,作为内部类可能不需要额外的权限...
内部类可以是静态的或非静态的,它们可以访问外部类的所有成员,包括私有成员,因为它们拥有对外部类的直接访问权限。在实验1中,`School_ly` 类有一个内部类 `InnerNewsPaper`,它代表校内的报纸。`InnerNewsPaper`...
### 单片机的内部和外部特性详析 #### 单片机的外部特性解析 单片机,作为微型计算机的一种形式,广泛应用于各种电子设备中。其外部特性主要涉及电源供应、时钟振荡电路、复位电路以及外部接口等部分。 1. **电源...
BIEE权限管理(内部用户和外部用户) BIEE权限管理是Oracle Business Intelligence Enterprise Edition(BIEE)中的一项重要功能,它允许管理员对不同的用户和角色分配不同的权限,以确保数据和系统的安全性。本文...
它们的好坏直接影响到单片机的运行速度和性能,因此正确地辨别内部晶振与外部晶振,了解它们的工作原理与适用场景,对于单片机的应用至关重要。 单片机晶振主要分为内部晶振和外部晶振两种类型。内部晶振是单片机...
外部控件操作类是软件开发中的一个重要概念,特别是在Windows应用程序设计中,经常涉及到与操作系统、硬件设备或者其他软件组件的交互。这个"完整版外部控件操作类.rar"压缩包很可能包含了一个全面的类库,用于方便...
- 如果在链接外部库时遇到“undefined reference”的错误,通常是因为库的导出设置不正确,或者.pro文件中库的路径和名称指定有误。 - 库项目中的类定义需包含LIB_UTILSHARED_EXPORT宏,这样声明的函数才能在其他...
- 首先,需要在硬件层面连接外部SRAM到STM32F4的FSMC接口。这通常涉及到电源、地址线、数据线和控制信号线的连接。 - 在软件配置上,我们需要在STM32CubeMX中设置FSMC时钟使能,并选择适当的Bank(如Bank1_NOR_...
外部类通过获取内部类的实例来实现单例模式。 例如,在下面的代码中,我们定义了一个静态内部类NestClass,该类中包含一个静态的实例变量instance,并在该类的静态块中实例化该变量。外部类SpecialSingleton通过...
在实际应用中,如遇到外部晶振损坏的情况,为了保持单片机的正常运行,可以将时钟源切换到内部5MHz的时钟源。这种内部时钟源位于锁相环(PLL)单元中,允许单片机在无晶振的情况下产生系统时钟,但其稳定性受温度...
外部安全性关心客户机从外部连接的问题,如防止MySQL服务器免遭通过网络进来的通过服务器的连接请求对数据库内容访问的攻击。要建立MySQL授权表使得它们不允许对服务器所管理的数据库的访问(除非提供了有效的名字和...
其中,`defineClass()`方法将字节码转换为Class对象,`resolveClass()`方法则负责链接已定义的类,完成符号引用到直接引用的转换。 理解内部类和类加载器的概念对于深入学习Java以及进行JVM相关的优化至关重要。...