内部类就是定义在一个类中的另外一个类,是一种从属关系。在没有实际了解内部类之前,我始终困惑,为什么要在一个类中定义另外一个类,这不是增加代码结构复杂度么?现在才大致能知道这种设计的优势是大于其劣势的。比如,我们可以通过内部类解决类的单继承问题,外部类不能再继承的类可以交给内部类继承。我们可以通过定义内部类来实现一个类私属于一个类,实现更好的封装性。具体的我们接下来介绍,本文主要通过介绍内部类的四种不同类型的定义,实例的创建,内部实现原理以及使用场景几种不同角度来学习内部类。
静态内部类
成员内部类
方法内部类
匿名内部类
一、静态内部类
静态内部类的定义和普通的静态变量或者静态方法的定义方法是一样的,使用static关键字,只不过这次static是修饰在class上的,一般而言,只有静态内部类才允许使用static关键字修饰,普通类的定义是不能用static关键字修饰的,这一点需要注意一下。下面定义一个静态内部类:
public class Out { private static String name; private int age; public static class In{ private int age; public void sayHello(){ System.out.println("my name is : "+name); //--编译报错--- //System.out.println("my age is :"+ age); } } }
在上述代码中,In这个类就是一个静态内部类。我们说