又经过了一周的学习,今天对本周学习进行总结
成员内部类
·访问外部类的成员i:成员内部类可以访问外部类的所有成员(包括私有成员),而无需任何特殊条件。
·创建实例:要创建成员内部类的实例,你需要先创建外部类的实例,然后通过这个外部类的实例来创建内部类的实例。
·持有外部类的引用:成员内部类隐式地持有一个指向其外部类实例的引用。在成员内部类中,你可以通过外部类名.this来访问外部类的当前实例。
·不能定义静态成员:成员内部类不能包含静态成员(除了静态常量),因为静态成员属于类本身,而成员内部类依赖于外部类的实例。
静态内部类
·不依赖于外部类的实例:静态内部类可以独立于外部类的实例而存在。你可以在不创建外部类实例的情况下创建静态内部类的实例。
·不能访问外部类的非静态成员:由于静态内部类不依赖于外部类的实例,因此它不能访问外部类的非静态成员(包括非静态变量和非静态方法)。但是,它可以访问外部类的静态成员。
·可以包含静态成员:静态内部类可以包含静态成员(变量、方法、内部类等)。
命名空间和封装:静态内部类提供了一种将类组织在一起的方式,同时保持了它们的独立性和封装性。
局部内部类
·作用域限制:局部内部类的可见性和作用域被限定在其声明的方法或代码块中。一旦退出该方法或代码块,局部内部类的实例将不再存在,且无法被访问。
·不能包含静态成员:由于局部内部类的作用域限制,它不能包含静态成员(除了静态常量,但通常不推荐这样做,因为静态常量在类加载时初始化,而局部内部类的生命周期远小于类加载的生命周期)。
·访问外部类的成员:局部内部类可以访问外部类的所有成员,包括私有成员,但它只能访问那些在其声明时可见的成员
匿名内部类
·没有名称:匿名内部类没有名称。
·只能使用一次:通常,匿名内部类用于创建一个类的单次实例,并立即使用它。
·必须是局部类:匿名内部类必须定义在方法或代码块内部,不能作为成员内部类或静态内部类。
·自动继承或实现:匿名内部类会隐式地继承一个类(如果指定了)或实现一个或多个接口。
·不能包含静态成员:由于匿名内部类是局部类,因此它不能包含静态成员。