java16-java语法基础(十五)内部类
一、内部类:
可以在一个类的内部定义另一个类,这种类称为内部类。
二、内部类分为两种类型:
1、静态内部类:
静态内部类是一个具有static修饰词的类,对外部类没有特殊的访问权限,概念上近似于C++中的嵌套类
2、非静态内部类:
平常我们使用的最多的是非静态内部类,这种内部类的实例中包含了对外部类对象的引用,拥有特殊的访问权限,可以访问到外部类的私有成员
强调:内部类可以访问它的外部类的所有变量和方法,并且可以像外部类的其他非静态成员那样以同样的方式直接引用他们。
三、内部类分为成员内部类、静态嵌套类、方法内部类、匿名内部类
1、几种内部类的共性:
内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的.class文件,但是前面冠以外部类的类命和$符号。
内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以*地访问外部类的成员变量,无论是否是private的
2、使用内部类的主要原因包括:
内部类可以方便的访问该类定义所在作用域中的数据,包括私有数据;
可以对同一个包中的其他类隐藏;
使用匿名内部类可以很方便的定义回调方法,这一优点在Swing开发中大量地被使用到。
四、方法内部类
定义在方法中的内部类的可见性更小,它只在方法内部可见,在外部类及外部类的其它方法中都不可见。
方法中的内部类连本方法的成员变量都不可访问,它只能访问本方法的final型成员。
在方法内部定义成员时,只允许使用final或abstract修饰。
方法内部类只能在定义该内部类的方法内实例化,不可以在此方法外对其实例化。
五、匿名内部类
顾名思义,没有名字的内部类,只有实现的接口或继承的父类的名字。