2022-01-13 13:05:58
内部类和匿名内部类的用法
内部类用法特点:
定义位置:内部类定义在另一个类的内部,可以位于成员位置(成员内部类)或局部位置(局部内部类)。静态内部类则定义在类中,任何方法外部,并使用static关键字修饰。
访问权限:内部类可以直接访问外部类的成员(包括私有成员),而外部类需要通过内部类的对象来访问内部类的成员。静态内部类不能访问外部类的非静态成员,但可以访问外部类的静态成员。
实例化:成员内部类需要通过外部类的对象来实例化(外部类对象.new 内部类())。静态内部类可以直接实例化(外部类.内部类())。局部内部类需要在其所在的方法或代码块中实例化。
匿名内部类用法特点:
实现接口或继承类:匿名内部类通常用于实现一个接口或继承一个类,而不需要为这个实现或继承专门定义一个类。
简洁性:当只需要一个类的实例,而不需要知道其具体类型时,可以使用匿名内部类。这样可以避免为临时用途的类命名,使代码更加简洁。
即时实例化:匿名内部类在定义的同时就可以被实例化,通常用于方法参数、返回值或局部变量的初始化。
用法示例:
实现接口:InterfaceName obj = new InterfaceName() { // 实现接口的方法 };
继承类:ClassName obj = new ClassName() { // 覆盖或增加方法 };
总之,内部类和匿名内部类是Java中两种重要的类结构,它们提供了灵活的方式来组织代码和实现特定的功能需求。内部类适用于需要在类的内部定义辅助类或工具类的情况,而匿名内部类则适用于需要快速实现接口或继承类而不需要额外命名的情况。