内部类表示的事物是外部类的一部分,单独出现没有任何意义,所以才定义在外部类内,而不是成为外部类的成员。
内部类的访问特点:
- 内部类可以直接访问外部类的成员,包括私有。
- 外部类要访问内部类的成员,必须创造对象。
分类:(前三个了解即可)
- 成员内部类
- 静态内部类
- 局部内部类
- 匿名内部类(需要掌握)
匿名内部类:
隐藏了名字的内部类。
格式:
new 类名/接口名(){
重写方法;
};
理解:某些场景需要一个对象(继承某个父类/实现某一接口)去完成一次动作,而且只出现一次(很少),为此再编写一个独立的类就会造成不必要的开销。而使用匿名内部类能快速实现这个动作而不去额外建造一个类。
使用场景:
当方法的参数是接口或者类时,以接口为例,可以传递这个接口的实现类对象,如果实现类只要使用一次,就可以用匿名内部类简化代码。
匿名内部类的意义:
- 简化实现:
- 在仅需要一次使用的场景中,匿名内部类可以避免创建一个额外的命名类。比如在事件处理、线程执行等情况下,代码量较少,逻辑明确。
- 直接访问外部类的成员:
- 匿名内部类可以访问外部类的成员(包括私有成员),这使得在处理逻辑时更方便,尤其在复杂逻辑中,这种直接访问可以提高效率。
- 提升局部性:
- 匿名内部类通常定义在方法内部,使得这个类只在这个方法的上下文中可用,提升了封装性,减少了命名冲突的可能性。