Java中什么是嵌套类?

Python014

Java中什么是嵌套类?,第1张

静态部类(也称:嵌套类)

如果你不需要内部类对象与其外围类对象之间有联系,那你可以将内部类声明为static。这通常称为嵌套类(nested class)。想要理解static应用于内部类时的含义,你就必须记住,普通的内部类对象隐含地保存了一个引用,指向创建它的外围类对象。然而,当内部类是static的时,就不是这样了。嵌套类意味着:

1. 要创建嵌套类的对象,并不需要其外围类的对象。

2. 不能从嵌套类的对象中访问非静态的外围类对象。

1)事实上,与前相同,静态内部类也就类似一个类的静态成员方法,它不需要外部类的对象而直接由外部类创建。

2)类似一个类的静态成员方法,它只能访问外部类的静态成员,而不能访问非静态成员。

3)静态内部类中可以定义静态成员,当然也可以定义非静态成员。而其它的内部类都不能定义静态成员。

4)在类外部生成一个静态内部类也和在类外部调用静态方法一样,直接用外部类名创建,如下例:

Outer.Inner in = new Outer.Inner()

首先 类之间是可以嵌套的。

其次 内部类一般常用的有:

1、普通内部类 即:直接在一个类的内部定义另外一个类

创建内部类时,外部类的对象必须已经创建

即:例子

public class Class1{

int i

class Inner{

static int j//这是错误的

int j//正确

private void getData() {

i = 2

}

}

}

Class1.Inner inner = new StringSplit().new Inner()

实例内部类会持有外部类的引用

即:上例中的 i = 2等价于 Class1.this.i = 2

实例内部类不能定义static静态成员变量,只能定义实例成员变量

2、静态内部类

不会持有外部类的引用,若要使用外部类的成员变量,则需生成外部类的对象

创建时可以没有外部类的实例 即:

public class Class1{

static int i

int k

static class Inner{

static int j//这是错误的

int j//正确

private void getData() {

i = 2//上面i为静态,此处正确,否则错误

Class1 class1 = new Class1()

class1.k//正确

}

}

}

Class1.Inner inner = new Class1.Inner()

可以访问外部类的静态变量