Java的四种内部类(成员内部变量,静态内部变量,局部内部类,匿名内部类)

发布时间 2023-11-01 15:48:07作者: silly_fox

内部类

  • 内部类就是在一个内的内部再定义一个内
  • 内部类的分类:成员内部类,静态内部类,局部内部类,匿名内部类

(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();
}