주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 익명 객체는 이름이 없는 객체를 말합니다. 익명 객체는 단독으로 생성할 수는 없고 클래스를 상속하거나 구현할 인터페이스가 있어야만 생성할 수 있습니다. 익명 객체는 필드의 초기값이나 로컬 변수의 초기값, 매개 변수의 매개 값으로 주로 대입됩니다. UI 이벤트 처리 객체나 스레드 객체를 간편하게 생성할 목적으로 익명 객체가 많이 활용됩니다. 익명 자식 객체 생성 부모 타입으로 필드나 변수를 선언하고, 자식 객체를 초기값으로 대입할 경우를 생각해 보겠습니다. 우선, 부모 클래스를 상속해서 자식 클래스를 선언하고, new 연산자를 이용해..
주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 중첩 인터페이스는 클래스의 멤버로 선언된 인터페이스를 말합니다. 인터페이스를 클래스 내부에 선언하는 이유는 해당 클래스와 긴밀한 관계를 맺는 구현 클래스를 만들기 위함입니다. 특히 UI 프로그래밍에서 이벤트를 처리할 목적으로 많이 활용됩니다. class A { interface I { void method(); } } 예를 들어 Button을 클릭했을 때 이벤트를 처리하는 객체를 받고 싶다고 가정해 보겠습니다. 그렇다고 아무 객체나 받으면 안 되고, Button 내부에 선언된 중첩 인터페이스를 구현한 객체만 받아야 한다면 다음과 같..
주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 바깥 필드와 메서드에서 사용 제한 인스턴스 멤버 클래스는 바깥 클래스의 인스턴스 필드의 초기값으로 사용될 객체를 생성하거나 인스턴스 메서드에서 객체를 생성할 수 있습니다. 하지만 정적 필드의 초기값으로 사용될 객체를 생성하거나 정적 메서드에서 객체를 생성하는 것은 불가능합니다. 반면 정적 멤버 클래스는 모든 필드의 초기값이나 모든 메서드에서 객체를 생성할 수 있습니다. 즉, 인스턴스 멤버 클래스는 인스턴스 필드와 인스턴스 메서드에 대해서만 객체를 생성할 수 있고, 정적 멤버 클래스는 정적 필드와 메서드에 대해서도 객체를 생성할 수 ..
주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 중첩 클래스는 클래스 내부에 선언되는 위치에 따라서 두 가지로 분류됩니다. 클래스의 멤버로서 선언되는 중첩 클래스를 '멤버 클래스'라고 하고, 메서드 내부에서 선언되는 중첩 클래스를 '로컬 클래스'라고 합니다. 멤버 클래스는 클래스나 객체가 사용 중이라면 언제든지 재사용이 가능하지만, 로컬 클래스는 메서드 실행 시에만 사용되고, 메서드가 실행 종료되면 없어집니다. 인스턴스 멤버 클래스 인스턴스 멤버 클래스는 static 키워드 없이 선언된 클래스를 말합니다. 인스턴스 멤버 클래스는 인스턴스 필드와 메서드만 선언이 가능하고 정적 필드..