# 说明

类写在其他类的内部,可以写在其他类的成员位置和内部局部位置,这时写在其他类内部的类就称之为内部类


内部类
public class A{
	public void sayHi(){
        class A_1{// 内部类 在类的内部
        
    	}
    }
    class A_2{// 内部类 在类的外部
    
	}
}

# 成员内部类

定义格式:

成员内部类
public class 类名{
    修饰符 class 内部类名{}
}

访问的方式:

外部类名。内部类名 变量名 = new 外部类名 ().new 内部类名 ();


# 局部内部类

定义格式:

局部内部类
public class 类名{
    public void 方法名(){
        修饰符 class 内部类名{}
    }
}

访问方式:

外部类名。内部类名 变量名 = new 外部类名 ().new 内部类名 ();


# 匿名内部类

比较常用的内部类就是匿名内部类了,它是局部内部类的一种

注意事项:

  • 匿名内部类没有构造方法
  • 匿名类不能定义静态的成员
  • 匿名类不能使用 publicprivateprotectedstaticfinalabstract 等修饰
  • 只可以创建一个匿名的实例

定义格式:

格式
new 父类或接口(){
    // 方法重写或者写自己要的方法
}

匿名内部类
public class 类名{
    public class A{}  // 成员内部类
    public static void main(String[] args){
        new A(){
            void Say(){
                System.out.println("Hi");
            }
        }.Say();
    }
}
// 运行后结果:Hi