1.定义:内部类是定义在另一个类中的类,就是类中类
2.为什么使用:(1)内部类方法可以访问该类定义所在的作用域中的数据,包括私有的数据。
(2)内部类可以对同一个包中的其他类隐藏起来
(3)当想要定义一个回调函数且不想编写大量代码时,用匿名内部类比较便捷
3.内部类的特殊语法规则
内部类中声明的所有静态域必须是final
内部类不能有static方法
局部内部类中的局部变量必须是final
局部内部类不能用public 或private进行声明
局部内部类减少了需要显式编写的实例域,从而使内部类更加简单
匿名内部类不能有构造器,取而代之的是将构造器参数传递给超类构造器
注意:静态方法属于类不属于对象
4.内部类种类:
普通内部类:简单的类中类
局部内部类:
public class A{
....
public void method(){
class B xxx{
public void methoda(){
xxxxxx
}
}
}
}
匿名内部类:
public class A{
....
public void method(){
{
public void methoda(){
xxxxxx
}
}
}
}
静态内部类:
应用场景:
使用内部类只是为了把一个类隐藏在另一个类的内部,并不需要内部类引用外围类对象。为此可以将内部类声明为static,以便取消引用
public class A{
....
public static class B xxx{
public void methoda(){
xxxxxx
}
}
}
注释:
在内部类不需要访问外围类对象的时候,应该使用静态内部类。有些程序员用嵌套类表示静态内部类
与常规内部类不同,静态内部类可以有静态域和方法
声明接口中的内部类自动成为static和public类。