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