Java的四种内部类(成员内部变量,静态内部变量,局部内部类,匿名内部类)
内部类
- 内部类就是在一个内的内部再定义一个内
- 内部类的分类:成员内部类,静态内部类,局部内部类,匿名内部类
(1)成员内部类
- 指类中的一个普通成员,可以定义成员属性,成员方法
- 内部类是可以访问外部类的成员和实例的
成员内部类的定义
//外部类
public class Outer{
//定义成员内部类
public class Inner{
private String name; //内部类的成员属性
public static String schoolName; //静态成员变量
public void test(){ //定义方法
}
}
}
成员内部类的使用
注意:必须要先创建外部类的对象,内部类的对象才能够被创建
Outer.Inner in = new Outer().new Inner();
in.test(); //之后跟其他类的使用没什么区别
- 如果外部类和成员内部类有相同的属性,访问内部类属性使用this;访问外部类属性使用外部类名称+this
this.age; //内部类的属性
Outer.this.age; //外部类的属性
(2)静态内部类
- 有static修饰的内部类,属于外部类自己持有。
- 静态内部类与成员内部类的使用基本一致,但静态内部类只能访问外部类的静态成员变量。
(3)局部内部类
- 局部内部类就是定义在方法,代码块,构造器等执行体中。
(4)匿名内部类
- 匿名内部类是特殊的局部内部类,匿名指的是不需要声明名字
- 如果匿名内部类为空,则编译器会报错
- 匿名内部类本质就是一个子类,并且会创建出一个子类对象
- 匿名内部类可以更方便的创建出一个子类对象,通常作为一个参数传递给方法。
//内部类声明
new 类或接口(参数){
}
使用示例
public calss Test{
new Animal(){ //匿名内部类
public void cry(){
}
}
}
abstract class Animal{
public abstract void cry();
}