内部类--毕向东Java基础教程学习笔记

时间:2021-09-11 06:15:42

内部类的访问规则

1. 内部类可以直接访问外部类的成员,包括私有。

之所以可以直接访问外部类的成员,是因为内部类中持有外部类的引用,格式:外部类名.this

2.外部类要访问内部类,必须建立内部类对象。

访问格式:

1.当内部类定义在外部类的成员位置上并且非私有时,可以在外部其他类中,直接建立内部类的对象。

格式:

外部类名.内部类名 变量名=外部类对象.内部类对象;

如:Outer.Inner in=new Outer().new Inner();

2.当内部类在成员位置上,就可以被成员修饰符所修饰。

比如private:将内部类在外部类中进行封装。

static:内部类就具备了static的特性。

当内部类被static修饰后,只能访问外部类的静态成员,出现了访问局限。

在外部其他类中,如何直接访问static内部类的静态成员呢?

Outer.Inner.function();(Inner 是静态的,可以直接通过外部类名Outer来访问;function也是静态的,可以直接通过其所在类的类名Inner访问。)

注意:如果在内部类中定义了静态成员,则该内部类必须也是静态的。

当外部类中的静态方法中需要访问内部类时,内部类必须也是static的。

总的来说就是那个比较常见的提示:“不能在静态上下文中引用非静态变量”。

3.因为内部类可以定义在外部类中任意的位置。

当内部类被定义在局部时(比如,在方法中):

1.不可以被成员修饰符修饰。

2.可以直接访问外部类中的成员,因为还持有外部类的引用。

但不可以访问它所在的局部区域中的变量,除非该变量被final修饰。

什么时候需要使用内部类?

当描述事物时,事物的内部还有事物,在内部的事物就用内部类来描述,因为内部事物需要使用外部事物的内容。