内部类: 所谓内部类就是在一个类内部进行其他类结构的嵌套操作, 什么情况下有这个需求呢,回顾我们的超级链表,Node这个节点类其实主 要就是给,SuperLinked使用,所以我们可以把这个类定在定SuperLinked 中就好了。
class SuperLinked{
Node head = null;
//...
//定义一个内部类
class Node{ }
}
内部类一样可以被权限修饰符来修饰,如果一个类归属于一个工程,而一 个内部类就归属于一个类:
在外部如何创建内部类:
public class Outer {
static {
System.out.println("外部类被加载");
}
// 不被static修饰就是属于实例对象
class Inner{
{
System.out.println("内部类被加载");
}
}
public static void main(String[] args) {
// 这个写法就离谱
new Outer().new Inner();
}
}
因为一个类内部的属性方法不加static就是属于实例对象的。
如果我们想这样更友好的创建呢?你一定能想到静态:
public class Outer {
static {
System.out.println("外部类被加载");
}
static class Inner{ //被调用时才会显现
static {
System.out.println("内部类被加载");
}
}
public static void main(String[] args) {
new Outer.Inner();
}
}
外部类被加载
内部类被加载
这叫静态内部类,相比实例内部类,我们主要使用的是静态内部类。
当然如果我们不希望其他的类访问我们的内部类,加上private就好了。