(资料图片)
在一个.java源文件中,只能定义一个类名与文件名完全一致的公开类,使用public class关键字来修饰。但在面向对象语言中,任何一个类都可以在内部定义另外一个类,前者为外部类,后者为内部类。内部类本身就是类的一个属性,与其他属性定义方式一致。比如,属性字段private static String str,由访问控制符、是否静态、类型、变量名组成,而内部类private static class Inner{},也是按这样的顺序来定义的,类型可以为class、enum、甚至是interface,当然在内部类中定义接口是不推荐。内部类可以是静态和非静态的,它可以出现在属性定义、方法体和表达式中,甚至可以匿名出现,具体分为如下四种。·静态内部类,如:static class StaticInnerClass{};·成员内部类,如:private class InstanceInnerClass{};·局部内部类,定义在方法或者表达式内部;·匿名内部类,如:(new Thread(){}).start()。如下是最精简的4种内部类定义方式:
点击查看代码
public class OuterClass { // 成员内部类 private class InstanceInnerClass {} // 静态内部类 static class StaticInnerClass {} public static void main(String[] args) { // 两个匿名内部类,分别对应图2-1所示的OuterClass$1和OuterClass$2 (new Thread(){}).start(); (new Thread(){}).start(); // 两个方法内部类,分别对应图2-1所示的OuterClass$1MethodClass1和 // OuterClass$1MethodClass2 class MethodClass1{} class MethodClass2{} } }
点击查看代码
static class Node implements Map.Entry { final int hash; final K key; volatile V val; volatile Node next;}
关键词: