09-03 Java语言基础(内部类)
发布日期:2021-05-06 23:59:26 浏览次数:27 分类:精选文章

本文共 1541 字,大约阅读时间需要 5 分钟。

Java 内部类详解

1. 内部类的定义

内部类是指在一个类定义的内部定义的类。与外部类不同,内部类可以通过外部类对象的引用访问。内部类的定义方式有多种,主要分为静态成员内部类、非静态成员内部类、局部内部类和匿名内部类。

2. 内部类的访问特点

内部类与外部类之间的访问规则存在一定的特殊性:

  • 直接访问外部类成员:内部类可以直接访问外部类的成员,包括私有成员。这意味着无需显式访问权限修饰符。
  • 外部类访问内部类成员的方式:外部类需要通过对象引用来访问内部类成员。具体来说,外部类名.内部类名 对象名 = 外部类对象.内部类对象。
  • 内部类的可见性:即便内部类是私有的,外部类仍然可以访问它,只需创建内部类对象。

3. 静态成员内部类

静态成员内部类是指在外部类中使用 static 关键字修饰内部类定义的类。这样的内部类具有以下特点:

  • 与外部类无关,它的生命周期与外部类相同。
  • 可以通过外部类名直接访问,如 Outer.Inner oi = new Outer.Inner();
  • 静态成员内部类可以访问外部类的静态成员,但不能访问非静态成员。

4. 面试题:变量在控制台输出30,20,10

class Outer {
public int num = 10;
class Inner {
public int num = 20;
public void show() {
int num = 30;
System.out.println(num); // 30
System.out.println(this.num); // 20
System.out.println(Outer.this.num); // 10
}
}
}
class InnerClassTest {
public static void main(String[] args) {
Outer.Inner oi = new Outer().new Inner();
oi.show();
}
}

要实现输出30、20、10,可以使用 Outer.this.num 来获取外部类的 num 值。

5. 局部内部类

局部内部类是指定义在类的成员方法中的内部类。其特点包括:

  • 只能在方法的内部定义。
  • 必须使用 final 修饰局部变量,否则无法访问。
  • 局部内部类的对象可以在方法的内部任意位置创建和使用。

6. 匿名内部类

匿名内部类是一种简化的内部类定义方式。其特点包括:

  • 没有类名,可以直接创建对象。
  • 实现了接口或继承自类。
  • 不能向下类型转换,因为没有类名。

7. 面试题:补齐代码

class Test {
public static void main(String[] args) {
Outer.method().show();
}
}
interface Inter {
void show();
}
class Outer {
public static Inter method() {
return new Inter() {
System.out.println("HelloWorld");
};
}
}

通过将匿名内部类返回 Inter 接口的实例,实现了 show() 方法的功能。

通过以上内容,可以清晰地理解 Java 内部类的定义、特点和使用方法。

上一篇:解决在windows上没有权限修改hosts文件的问题
下一篇:09-02 Java语言基础(修饰符)

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月01日 02时26分21秒