Java:内部类特点

内部类特点

 

1.内部类是一个独立的类:编译之后内部类会被编译成独立的.class文件,如果该内部类为有名内部类,则有名内部类字节码文件名为外部类的类名+$+内部类类名;如果为匿名内部类,则匿名内部类字节码文件名为外部类类名+$+数字;

 

2.普通外部类、抽象类和接口可以有内部类(匿名的或有名的);

 

3.内部类可以直接定义在类中,也可以定义在方法或代码块中;其中直接定义在外部类中的内部类可以有public、protected、默认的和private四种访问权限修饰(普通外部类、接口和抽象类只能使用public和default修饰),也可以使用static修饰( static不能修饰普通外部类、接口和抽象类);但是定义在方法或代码块中的内部类不能有访问修饰符修饰,也不能有static修饰。

 

4.内部类可以访问外部类的所有访问权限的成员变量,如下例:

 

 

5.在局部变量作用的范围内,如果定义的内部类需要使用该局部变量,则该变量必须有final修饰。 

 

代码1:

 

注:

红框:由于局部变量name要在InClass内部类中使用,所以需要加final;方法参数前面加final修饰表示只能在调用方法时为该参数指定值,不允许再在方法体中进行二次修改。

蓝框:由于局部变量weight要在InClass内部类中使用,所以需要加final; 

 

代码2:

 

注:由于局部变量i要在InClass内部类中使用,所以需要加final;

 

注意:从 Java 8开始,如果定义的内部类需要使用该局部变量,则该变量可以使用final修饰。

 

posted @ 2018-09-07 12:17  龙雪  阅读(284)  评论(0编辑  收藏  举报