内部类
概念
-
将一个类定义到另一个类内部。
-
分为成员内部类(类中方法外)和,局部内部类(方法中)。
在成员位置定义的类,被称为成员内部类。
在局部位置定义的类,被称为局部内部类。 -
创建成员内部类的语法:外部类名.内部类名 对象名 = 外部类对象.内部类对象;
成员内部类的特点
- 内部类可以直接访问外部类的成员变量,方法,私有方法。外部类想访问内部类的成员,需要创建内部类的对象。
- 内部类可以用private修饰,修饰后,外部类不能直接访问,要想继续访问,提供get和set方法。
- 内部类可以用static修饰,修饰后创建内部类的语法要改变(不加时的语法:Wai.Nei nei=new wai().nei Nei)Wai.Nei nei=new Wai.Nei()。静态内部类要访问外部类的成员,只能访问静态的。(静态只能访问静态)。
局部内部类
- 局部内部类可以直接访问外部
- 类的成员,包括私有的成员。
- 局部内部类外界不能直接创建其对象。
- 想要调用就得间接调用。
- 局部内部类访问外部类的局部变量时要加final(局部变量变常亮),jdk1.8默认加上。因为方法调用完局部变量就消失了,局部变量的存在时间小于对象存在时间,所以加final能让对象继续访问局部变量。
匿名内部类
- 是局部内部类的简写
- 本质上是一个实现了该接口或继承了抽象类的子类对象。
- 匿名内部类可以new出子类的对象。不用知道子类是谁,只要知道谁是子类对象。
- 匿名内部类可以作为参数返回
- 格式:new 类名或者接口名(){重写方法;} ;