내부 클래스(inner class)는 클래스 내에 선언된 클래스로, 외부 클래스와 내부 클래스가 서로 연관되어 있을 때 사용한다. 내부 클래스를 사용하면 내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있고, 외부에서 내부 클래스에 접근이 안되기 때문에 코드의 복잡성을 줄일 수 있다는 장점이 있다. 또한, 외부적으로 불필요한 데이터를 감출 수 있어 객체 지향의 중요한 핵심 원칙인 캡슐화(encapsulation)를 달성하는 데 유용하다. class Outer { // 외부 클래스 class Inner { // 인스턴스 내부 클래스 } static class StaticInner { // 정적 내부 클래스 } void run() { class LocalInner { // 지역 내부 클래스 } } }..