对比四种不同的内部类,从定义、初始化、访问、成员特性(静态、实例两种)、是否有名字等方面Java
时间: 2023-08-23 07:03:55 浏览: 102
java 内部类(匿名类,匿名对象,静态内部类)详解及实例
在Java中,内部类包括成员内部类、局部内部类、匿名内部类和静态内部类。它们在定义、初始化、访问、成员特性和是否有名字等方面有所不同。
1. 成员内部类:
定义:成员内部类是定义在另一个类中的类,可以访问外部类的成员变量和方法。
初始化:需要先创建外部类对象,然后再通过外部类对象来创建成员内部类对象。
访问:可以直接访问外部类的成员,但外部类不能直接访问成员内部类的成员。
成员特性:成员内部类可以是静态的或非静态的,但不能有静态成员。
是否有名字:有名字。
2. 局部内部类:
定义:局部内部类是定义在方法或代码块中的类,只能在方法或代码块中访问。
初始化:在方法或代码块中创建。
访问:只能在方法或代码块中访问,不能在外部访问。
成员特性:不能定义静态成员和方法,可以访问外部类的成员变量和方法,但是只能访问被final修饰的局部变量。
是否有名字:有名字。
3. 匿名内部类:
定义:匿名内部类是没有名字的内部类,通常用于创建实现某个接口或继承某个抽象类的对象。
初始化:直接在创建对象的时候定义。
访问:只能在创建对象的作用域内使用。
成员特性:不能定义静态成员和方法,可以访问外部类的成员变量和方法,但是只能访问被final修饰的局部变量。
是否有名字:没有名字。
4. 静态内部类:
定义:静态内部类是定义在另一个类中的类,但是它与外部类的实例无关,可以直接访问外部类的静态成员和方法。
初始化:可以直接通过类名来创建对象。
访问:可以直接访问外部类的静态成员和方法,但不能直接访问非静态成员和方法。
成员特性:只能定义静态成员和方法。
是否有名字:有名字。
阅读全文