📜  java 标准内部类 - Java (1)

📅  最后修改于: 2023-12-03 15:16:01.375000             🧑  作者: Mango

Java 标准内部类

什么是内部类?

内部类是定义在另一个类内部的类。它可以访问外部类的成员,包括私有成员,并提供了一种实现多层嵌套的解决方案。

内部类主要有四种类型:成员内部类、局部内部类、匿名内部类和静态内部类,本篇介绍的是成员内部类。

成员内部类是什么?

成员内部类是定义在另一个类内部,且不是 static 的类。它可以使用外围类的所有变量和方法,与外围类通过一个实例来访问(即需要先创建外围类的实例,才能创建其内部类的实例)。

成员内部类的定义格式如下:

public class OuterClass {
    // 外部类
    private int outerVariable;
    
    // 成员内部类
    public class InnerClass {
        private int innerVariable;

        public void innerMethod() {
            System.out.println("Inner Method");
        }
    }
}
如何使用成员内部类?
  1. 创建外部类的实例,然后再创建内部类的实例:
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.new InnerClass();
  1. 在外部类中创建内部类的实例,再创建外部类的实例:
public class OuterClass {
    // 外部类
    private int outerVariable;
    
    // 成员内部类
    public class InnerClass {
        private int innerVariable;

        public void innerMethod() {
            System.out.println("Inner Method");
        }
    }

    public void outerMethod() {
        InnerClass inner = new InnerClass();
    }
}

OuterClass outer = new OuterClass();
outer.outerMethod();
成员内部类的优势

成员内部类的存在主要是为了解决以下问题:

  1. 保护内部类的成员变量和方法不被外部类和其他类访问;
  2. 内部类可以继承其他类和实现接口;
  3. 内部类中可以访问外部类的成员(包括私有成员)。
总结

成员内部类是一种非常方便的工具,可以用于实现多层嵌套和代码封装。尽管使用成员内部类可以产生一些问题,但是在适当的情况下,它可以提高代码的可读性并简化代码结构。