可以在类中的任何位置定义内部类,并在其中编写Java语句。有三种类型的内部类。 内部类的类型取决于位置和声明的方式。
-
成员内部类
-
局部内部类
-
匿名内部类
成员内部类
成员内部类在类中声明的方式与声明成员字段或成员方法相同。它可以声明为public
,private
,protected
或package-level
。成员内部类的实例可以仅存在于其封闭类的实例内。
以下代码创建了一个成员内部类。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
class Car { private int year; // A member inner class named Tire public class Tire { private double radius; public Tire( double radius) { this .radius = radius; } public double getRadius() { return radius; } } // Member inner class declaration ends here // A constructor for the Car class public Car( int year) { this .year = year; } public int getYear() { return year; } } |
局部内在类
一个局部内部类在块中声明。 其范围仅限于声明它的块。由于其范围限于其封闭块,因此其声明不能使用任何访问修饰符,例如public
,private
或protected
。
通常,在方法内定义局部内部类。 但是,它也可以在静态初始化器,非静态初始化器和构造器中定义。下面的代码显示了一个局部内部类的例子。