内部类:内部类就是定义在另一个类里面的类啦,它们可以访问外部类的所有成员,包括私有的
1.实例内部类
实例化对象
Outer:外部类 Inner:内部类
注意:
1.外部类中的任何成员都可以在实例内部类方法中直接访问
2.实例内部类所处的位置与外部类成员位置相同,因此也受public、private等访问限定符的约束
3.在实例内部类方法中访问同名的成员时,优先访问自己的,如果要访问外部类同名的成员,必须:外部类名称.this.同名成员来访问
4.实例内部类对象必须在先有外部类对象前提下才能创建
5.实例内部类的非静态方法中包含了一个指向外部类对象的引用
6.外部类中,不能直接访问实例内部类中的成员,如果要访问必须先要创建内部类的对象。
2.静态内部类
实例化对象
Outer:外部类 Inner:内部类
注意:
1.在静态内部类中只能访问外部类中的静态成员
2.创建静态内部类对象时,不需要先创建外部类对象
3.局部内部类(了解)
局部内部类是在方法里面定义的内部类。它们的作用域只在这个方法里面,就像个临时的小助手一样。
注意:
1.局部内部类只能在所定义的方法体内部使用
2.不能被public、static等修饰符修饰
3.编译器也有自己独立的字节码文件,命名格式:外部类名字$数字内部类名字.class
4.几乎不会使用
4.匿名内部类
匿名内部类是 Java 编程语言中一种特殊的类,它没有显式地定义类名,而是在创建对象时通过传递实现了某个接口或继承了某个类的代码块来定义类。通常,我们使用它来简化代码、减少类的数量和更高效地编写事件处理程序等。
匿名内部类的优点:
在实际开发中,我们常常遇到这样的情况:一个接口/类的方法的某个实现方式在程序中只会执行一次,但为了使用它,我们需要创建它的实现类/子类去实现/重写。此时可以使用匿名内部类的方式,可以无需创建新的类,减少代码。
匿名内部类的格式:
格式细节: