【概念】
定义在一个类内部的类,叫作“嵌套类”。嵌套类分为两种:static的和非static的。后者又有一个专门的名字,叫作“内部类”。所以从概念可以看出,嵌套类跟内部类是所属关系,后者包含于前者。示例代码如下:
class OuterClass {同时,嵌套类是其所在类的成员。内部类可以访问所在类的所有成员,即使该成员是private的。而static嵌套类则不得访问所在类的成员。同时,嵌套类,static和非static的,都可以被声明为private、public、protected和default的。
【为什么要使用嵌套类】
好处应该都比较文本化吧,以后在使用的过程中去理解和体会吧:对只在一个地方使用的类进行逻辑上的分组;增加了封装性;易于阅读和维护。
【static嵌套类】
因为static嵌套类不能直接访问所在类的非static成员变量和方法,所以static嵌套类必须通过绑定所在类的实例来进行访问。而对于所在类的静态成员和方法包括private、protected和public的,可以访问。因为它也有static修饰。
static嵌套类通过写出封装的类名来进行实例化和访问其内部成员:
OuterClass.StaticNestedClass nestedObject =Java中什么是嵌套类?
静态内部类(也称:嵌套类)如果你不需要内部类对象与其外围类对象之间有联系,那你可以将内部类声明为static。这通常称为嵌套类(nested class)。想要理解static应用于内部类时的含义,你就必须记住,普通的内部类对象隐含地保存了一个引用,指向创建它的外围类对象。然而,当内部类是static的时,就不是...
内部类可以继承外部类吗
在Java中,内部类(也称为嵌套类)可以继承外部类的所有非私有成员。这意味着,外部类是一个类而不是接口,那么内部类可以继承外部类的所有非私有属性和方法。外部类是一个接口,那么内部类可以实现该接口的所有方法。请注意,当一个内部类继承了外部类时,内部类隐式地拥有外部类的所有非私有成员的访...
java内部类静态嵌套类
内部类在Java中,尤其是静态内部类和静态嵌套类,是面向对象编程中的一个重要概念。静态内部类和静态嵌套类在定义和使用上有细微的区别,但它们都提供了一种在结构上更加灵活和复杂的方法来组织和管理代码。静态内部类和静态嵌套类的主要区别在于它们与外部类的关系以及访问外部类成员的方式。静态内部类可以...
[Kotlin] 内部类
内部类 也叫做嵌套类,在Java里是一个被大家经常使用到的东西。内部类除了匿名内部类外还分为三种,一种是可以自由访问外部类成员变量和方法的 成员内部类 ,一种是可以被独立构造实例且和外部类完全剥离的 静态内部类 ,一种是作用域和生命周期都只处在一个方法中的 方法内部类 ,但这种内部类我们...
Java嵌套类
}}private class TxtPrinter{ \/\/ 嵌套类public void print(Object data) {}}private class ExlPrinter{ \/\/ 嵌套类public void print(Object data) {}}} 例子可能不够生动,应该能解释清楚:有个类Class B,他的逻辑只对Class A负责,但是又不想把B暴露给他人,就把B定义成A的嵌套类 亲,如果...
Java,内部类有什么特别的好处吗
提起Java内部类(Inner Class)可能很多人不太熟悉,实际上类似的概念在C++里也有,那就是嵌套类(Nested Class),关于这两者的区别与联系,在下文中会有对比。内部类从表面上看,就是在类中又定义了一个类(下文会看到,内部类可以在很多地方定义),而实际上并没有那么简单,乍看上去内部类似乎有些多余,它的用处对于初学...
Java内部类的问题?
内部类分类:内部类可以分为:实例内部类、静态内部类和成员内部类,每种内部类都有它特定的一些特点。在类 A 中定义类 B,那么类 B 就是内部类,也称为嵌套类,相对而言,类 A 就是外部类。如果有多层嵌套,例如类 A 中有内部类 B,而类 B 中还有内部类 C,那么通常将最外层的类称为顶层...
嵌套层是什么意思?
嵌套层是什么意思?对于计算机语言的编程人员而言,嵌套层指的是一个代码块内部包含另一个代码块,且这些代码块之间存在层层嵌套的情况。一个代码块内部可以包含多个代码块,这就是嵌套层的概念。嵌套层是计算机语言编程过程中必不可少的概念。它使得程序可以具备更为复杂的逻辑,通过不同的嵌套层次完成更...
java类的测试( main函数)
嵌套类就其实另外一个类,但是因为它嵌套在外层的类里,所以能拥有访问外层类所有成员的权限(包括private),但是嵌套类在虚拟机层面是一个独立的类,名称是“OuterClass$NestedClass”,因为没有其它类能依赖于这个类(因为NestedClass是OuterClass的私有成员),所以生成的这个class文件能从jar包中移除。...
Static Nested Class 和 Inner Class的不同,说得越多越好
在C++中,嵌套类也与静态内部类在一定程度上相似,但其定义方式和使用方式不同。嵌套类是作为外部类成员直接定义的类,可以访问外部类的私有成员。Java的内部类与C++的嵌套类主要区别在于是否有指向外部的引用。内部类在Java中可以访问外部类的私有成员,但需要外部类实例作为参数。静态内部类则在创建时无...