官网文档:
Nested Classes
什么是嵌套类及内部类?
可以在
一个类的内部定义另一个类,这种类称为嵌套类(nested classes),它有两种类型:静态嵌套类和非静态嵌套类。
非静态嵌套类,也被称作为内部类(inner class)。嵌套类是其外部类的成员,可以被声明为private, public, protected, 或者package private。 (此时,外部类只能被声明为public 或者package private。)
嵌套类 从JDK1.1开始引入。其中内部类(inner类)又可分为三种:
- 在一个类(外部类)中直接定义的内部类;
- 在一个方法(外部类的方法)中定义的内部类;
- 匿名内部类。
class OuterClass {
...
static class StaticNestedClass {
...
}
class InnerClass {
...
}
}
为什么使用嵌套类(什么时候使用嵌套类):
- It is a way of logically grouping classes that are only used in one place. - If a class is useful to only one other class, then it is logical to embed it in that class and keep the two together. Nesting such "helper classes" makes their package more streamlined.
- 如果一个类只在一个地方被使用,同时这个类和另外一个类在逻辑上紧密相关,那么这个类可以被设计成内部类。
- It increases encapsulation. - Consider two top-level classes, A and B, where B needs access to members of A that would otherwise be declared private. By hiding class B within class A, A's members can be declared private and B can access them. In addition, B itself can be hidden from the outside world.
- 增强了封装性
- Nested classes can lead to more readable and maintainable code. - Nesting small classes within top-level classes places the code closer to where it is used.
- 嵌套类增加代码的可读性和可维护性(因为嵌套类从逻辑上来说都是相关的)。
静态嵌套类的(static nested class):
- 可以独立于外部类被实例化
- 无法访问外部类中的非静态变量和方法
- 静态嵌套类要和其外部类的实例变量(或者其他类)交互的话,其行为和一般顶级类一样
- 实际上,静态嵌套类就是一个为了打包方便而被嵌套进外部类的顶级类。
非静态嵌套类(内部类inner class):
- 想要实例化必须先实例化外部类。
- 可以访问外部类中的需要实例化的变量和方法,
分享到:
相关推荐
非静态嵌套类可以分为三种:在一个类中直接定义的内部类、在一个方法中定义的内部类和匿名内部类。匿名内部类是指没有名字的内部类,通常用于实现某个接口或继承某个类。 四、在外部类中定义内部类 在外部类中定义...
总的来说,理解Java和Kotlin的内部类和静态嵌套类是成为一名合格的移动开发者的基础。通过学习和实践,你可以更好地组织代码,提高代码质量,同时降低维护成本。在提供的资源中,"java内部类嵌套类"和"kotlin内部类...
### Java静态内部类(嵌套类)详解 #### 一、静态内部类概念与特性 在Java编程语言中,静态内部类(也被称为嵌套类)是一种特殊的内部类形式,它通过`static`关键字来定义。与普通内部类相比,静态内部类具有以下...
深入理解Java嵌套类和内部类 Java 嵌套类(nested classes)是指在一个类的内部定义另一个类,这种类有两种类型:静态嵌套类和非静态嵌套类。非静态嵌套类也称为内部类(inner classes)。在Java中,嵌套类从JDK1.1...
首先,嵌套类分为两种主要类型:静态嵌套类(也称为内部静态类)和非静态嵌套类(也称为实例内部类)。非静态嵌套类可以访问外部类的所有成员,包括私有成员,而静态嵌套类只能访问外部类的静态成员。这是因为非静态...
非静态嵌套类(内部类)与外部类的实例有关,这意味着必须先创建外部类的实例,然后才能创建内部类的实例。 ##### 3.1 非静态内部类 非静态内部类(Non-Static Inner Class)可以访问外部类的所有成员,包括私有...
静态嵌套类(Static Nested Classes)和内部类(Inner Classes)是嵌套类的两种主要类型。静态嵌套类是用static修饰的成员嵌套类。与成员嵌套类不同的是,静态嵌套类不能访问外部类的非static成员变量和方法。静态...
Java语言中的静态内部类,也称为嵌套类,是内部类的一种特殊形式,它与非静态内部类(也称为成员内部类)相比有着独特的特点和使用场景。在深入探讨其使用规范之前,我们先理解静态内部类的基本概念。 静态内部类不...
内部类可以分为四种:成员内部类、静态嵌套类、方法内部类和匿名内部类。 成员内部类 成员内部类是定义在外部类的成员变量中的一种内部类。它可以访问外部类的所有成员变量和方法,包括私有的变量和方法。成员内部...
静态内部类,又称为静态嵌套类,是内部类的一种特殊形式。与普通成员内部类不同,静态内部类不持有对外部类的引用,因此不能直接访问外部类的非静态成员。静态内部类需要通过外部类名.静态内部类名的方式来创建对象...
在Java中,嵌套类分为静态嵌套类和非静态嵌套类,后者通常被称为内部类。 1. 静态嵌套类(Static Nested Class) 静态嵌套类与普通的静态成员类似,它们不直接持有对外部类的引用,因此可以独立于外部类实例存在。...
Java内部类主要包括以下几种类型:成员内部类(非静态内部类)、静态内部类(也称为静态嵌套类)、局部内部类和匿名内部类。 - **成员内部类**:这种类型的内部类是定义在外部类的一个成员位置上,它可以访问外部类...
静态嵌套类较少使用,非静态嵌套类使用较多,也就是常说的内部类。 静态嵌套类(Static Nested Class)是指在外部类中使用static关键字修饰的嵌套类。静态嵌套类可以直接访问外部类的静态成员变量,但不能直接访问...
静态内部类只是嵌套在外部类中,因此也被称为嵌套内部类。 静态内部类的优点包括: * 增强了类的封装性 * 提高了代码的可读性 使用静态内部类可以将存在一定逻辑关系的类组织在一起,又可以对外界隐藏。典型的...
Java中的静态内部类(Static Class),也称为嵌套静态类,是Java语言提供的一种独特机制,它允许我们在一个外部类内部定义一个静态的类。这种类的声明前面带有`static`关键字,与普通的内部类(非静态内部类)有所...
### Java内部类详解 #### 一、内部类的分类与概念 Java的内部类机制是其强大特性之一,它允许类作为另一个类的成员存在,从而增强了代码的封装性和复用性。根据定义和作用域的不同,Java内部类主要分为四类: 1. ...
静态嵌套类主要用于当内部类不需要引用外部类实例的情况,而内部类则提供了更紧密的封装机制,使得内部类可以直接访问外部类的成员。在实际开发过程中,根据具体需求选择合适的嵌套类类型是非常重要的。
内部类可以分为四种:成员内部类、静态嵌套类、方法内部类和匿名内部类。每种内部类都有其特点和应用场景。 一、成员内部类 成员内部类是指定义在外部类中的内部类。它们可以访问外部类的所有成员变量和方法,无论...
Java内部类是Java语言中一个重要的概念,它指的是那些类定义被嵌套在其他类定义中的类。与之相对应的是顶层类,即那些类定义没有被嵌套在其他类中的类。内部类又可以进一步细分为几种类型:静态成员类、成员类、局部...