当前位置: java社区 > 03-略知一二 > 阅读正文

java之内部类

2021.8.27.   354 次   798字

内部类,是指在一个类中,建立的类

内部类分为:成员内部类,局部内部类,匿名内部类(也可看作局部内部类的一种)

成员内部类

成员内部类,就是在类的成员位置上定义的类

1.成员内部类的定义
修饰符 class 外部类名称{
  修饰符 class 内部类名称{
      //成员内部类类体;
  }
  //外部类类体;
}

(注:可以static修饰,此时为静态成员内部类,这里不讲)

2.互相访问

成员内部类可以直接访问外部类的资源

外部类使用访问成员内部类的方法,需要通过 new 内部类对象

//在此外部类中
内部类 类名 = new 内部类(参数列表);

//在其他外部类中
外部类.内部类 类名 = new 外部类.new 内部类();
3.同名属性冲突的解决
变量名;  //内部类局部变量
this.变量名;  //内部类成员变量
外部类.变量名;  //外部类成员变量

局部内部类

局部内部类是在方法内部的位置

1.局部内部类定义
修饰符 class 外部类名称{
  修饰符 返回值类型 外部类方法(参数列表){
    修饰符 class 局部内部类名称{
      // 局部内部类
    }
  }
}
2.访问

局部内部类可以直接外部类

外部类的本方法体内,可以通过 new 内部类对象

3.变量的 final 问题

对于局部内部类,只能访问到 有效 final (jdk8)的局部变量。对于更早版本的jdk,只能访问到 final 定义的局部变量。

匿名内部类

匿名内部类属于局部内部类的一种

匿名内部类并不是指匿名对象,而是指省略 extends, implements 的类

(匿名内部类,是指没有类的名字,得到的产物是对象,对象可以有名字)

语法:

//接口类
接口类名称 变量名 = new 接口类名称(参数列表){
  //覆盖未实现方法;
}
//子类
父类名称 变量名 = new 父类名称(参数列表){
  //类体;
}
类体访问修饰符

1.外部类: public / (default)

2.成员内部类:public / protected / (default) / private

3.局部内部类(包括匿名内部类):什么都不能写

本篇完,还有疑问?

加入QQ交流群:11500065636 IT 技术交流群