内部类
内部类:类中定义类
需求场景:当一个类中的成员,是另一个具体的事物,这个成员就可以定义成内部类
内部类的分类:
1、成员内部类
当内部类作为外部类的成员位置时,这个内部类就称为成员内部类
特点:具有成员的特点,也有类的特点,可以继承类和实现接口,
在内部类中可直接使用外部类的内容
外部类可以通过内部类的对象使用内部类的成员
成员内部类中不可以定义静态的内容,除静态的常量
使用:成员内部类的对象要通过外部类的对象创建
外部类 引用名=new 外部类();
外部类.内部类 引用名=外部类的引用名.new 内部类();
2、私有内部类
在外部类中通过内部类的对象使用它的成员,包括私有内容
私有内部类只能在当前的外部类中使用,其它类中不能使用
3、静态内部类
静态内部类可以定义静态内容
特点:在外部类中使用静态内部类中的内容,通过对象使用其成员内容,通过类名用其静态内容
静态内部类中通过外部类的对象使用其成员内容,可直接使用静态内容,
在其他类中如何使用静态内部类的内容:
通过外部类找到静态内部类,通过类名使用静态内容
通过外部类找到静态内部类,通过静态内部类的对象使用其成员内容
4、局部内部类
1、在当前定义方法中可以通过局部内类的对象使用其成员
2、其它类中不可以使用局部内部类中的内容,局部的内容不可以被外部调用
3、在局部内部类中使用到当前所在的方法参数,这个参数默认为被final关键字修饰
5、匿名内部类(****)
匿名内部类有类体,没有名字
特点:
简化类的结构
package com.shs;
public class Anony {
public static void main(String[] args) {
//匿名内部类
new Swim(){
@Override
public void Swimming() {
System.out.println("花样游泳!!!");
}
}.Swimming();
}
}
interface Swim{
void Swimming();
}