목록Java (10)
나는개발자니까
예외 처리의 개요 프로그램에서 예외가 발생하는 경우 프로그램은 종료됩니다. 예외가 발생했을 경우 프로그램이 갑자기 종료된다면 소비자가 서비스를 제대로 사용할 수 없습니다. 따라서 예외가 발생하더라도 정상 실행을 이어가기 위해서 우리는 예외 처리를 해야합니다. 예외 처리에는 Checked Exception과 Unchecked Exception로 2가지 종류가 있습니다. Checked Exception은 자바 컴파일러가 소스 파일을 컴파일할 때 예외가 발생할 가능성을 발견한다면 개발자에게 예외 처리 코드를 작성할 것을 요구합니다. 예외 처리를 발견했을 경우 Unhandled exception 에러가 발생합니다. 그러나 Unchecked Exception은 컴파일러가 체크해주지 않기 때문에 개발자 재량으로 예..
예외 클래스의 개요 자바에서 컴퓨터 하드웨어의 오동작이나 고장으로 인해 응용프로그램 실행 오류가 발생하는 것을 우리는 에러(error) 라고 부릅니다. 그리고 에러 이외에 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 자체에서 발생하는 오류를 예외(exception)이라고 부릅니다. 프로그램에서 예외가 발생한다면 프로그램이 즉시 종료됩니다. 만약 개발자가 예외 처리를 하지 않고 하나의 서비스를 제공했다면 계속 프로그램이 종료되어 사용자가 사용할 수 없는 서비스가 되겠죠? 따라서 예외 처리는 프로그램이 종료되지 않고 정상적으로 실행시키기 위해 필수 요소입니다. 예외와 예외 클래스 Checked Exception은 프로그램 실행 시 예외가 발생할 가능성이 높아 자바 소스를 컴파일..
익명 객체의 개요 익명 객체는 이름이 없는 객체입니다. 익명 객체를 사용하기 위한 조건은 어떤 클래스를 상속하거나 인터페이스를 구현해야 사용할 수 있습니다. 익명 객체를 사용하면 부모 클래스 변수는 이름이 없는 자식 객체를 참조하고, 인터페이스 변수는 이름이 없는 구현 객체를 참조합니다. 1. [상속] 부모클래스 변수 = new 부모클래스() { // ... }; 2. [구현] 인터페이스 변수 = new 인터페이스() { // ... }; 익명 자식 객체 생성 익명 자식 객체를 생성하는 방법은 아래와 같습니다. 부모클래스 [필드|변수] = new 부모클래스(매개값, ---) { // 필드 // 메소드 }; 자식 클래스가 재사용되지 않고, 특정 위치에서 사용할 경우라면 자식 클래스를 명시적으로 선언하는 것..
중첩 클래스와 중첩 인터페이스의 개요 중첩 클래스는 클래스 내부에 선언한 클래스입니다. 중첩 클래스를 사용하면 두 클래스의 멤버들을 서로 쉽게 접근할 수 있습니다. 마찬가지로 중첩 인터페이스도 인터페이스를 클래스 내부에 선언할 수 있습니다. 중첩 클래스 멤버 클래스는 클래스의 멤버로서 선언되는 중첩 클래스이고, 로컬 클래스는 생성자 또는 메소드 내부에서 선언되는 중첩 클래스이다. 1. 인스턴스 멤버 클래스 // A 객체를 생성해야만 사용할 수 있는 B 클래스입니다. class A { class B { // ... } } 인스턴스 멤버 클래스는 static 키워드 없이 중첩 선언된 클래스를 말합니다. 그리고 인스턴스 필드와 메소드만 선언이 가능하고 정적 필드와 메소드는 선언할 수 없습니다. 2. 정적 멤버..
인터페이스 다형성의 개요 다형성을 구현하기 위해서는 메소드 재정의와 타입 변환이 필요합니다. 상속은 같은 종류의 하위 클래스를 만드는 기술이고, 인터페이스는 사용 방법이 동일한 클래스를 만드는 기술로 다르지만 다형성을 구현하는 방법은 비슷합니다. 프로그램을 개발할 때 인터페이스를 사용해서 메소드를 호출하도록 코딩하면 구현 객체를 쉽게 교체할 수 있습니다. 이와 같이 인터페이스의 다형성을 사용하면, 프로그램 소스 코드는 변함이 없으면서 구현 객체를 교체함으로써 프로그램의 실행결과가 다양해 집니다. 인터페이스의 자동 타입 변환 인터페이스의 자동 타입 변환은 구현 객체가 인터페이스 타입으로 변환되는 것을 말합니다. 인터페이스 구현 클래스를 상속해서 자식 클래스를 만들었다면 자식 객체 역시 인터페이스 타입으로 ..
인터페이스의 개요 인터페이스 (interface)는 개발 코드와 객체가 서로 연결될 수 있는 중간다리 역할을 합니다. 개발 코드가 인터페이스의 메소드를 호출하면 인터페이스는 객체의 메소드를 호출합니다. 인터페이스는 개발 코드를 수정하지 않고 사용하는 객체를 변경할 수 있습니다. 인터페이스는 하나의 객체가 아니라 여러 객체들과 사용이 가능하므로 어떤 객체를 사용하느냐에 따라서 실행 내용과 리턴값이 다를 수 있습니다. 그런데 인터페이스를 사용하면 구조가 복잡해지고 생각해야할 것이 많아질 것 같은데 왜 사용할까요? "인터페이스는 서비스 로직에서 객체를 생성하고 메서드를 호출하는데 구조와 설계를 유지하기 위해서 사용합니다." 인터페이스 선언 interface 키워드를 사용해 선언합니다. [public] inte..
추상 클래스의 개요 실체 클래스 : 객체를 직접 생성할 수 있는 클래스 추상 클래스 : 이 클래스들의 공통적인 특성을 추출해서 선언한 클래스 추상 클래스가 부모 클래스, 실체 클래스가 자식 클래스로 구현되어 상속 관계를 가지고 있습니다. 실체 클래스는 추상 클래스의 모든 특성 (필드와 메소드)을 물려받고, 추가적인 특성을 가질 수 없습니다. 추상 클래스의 용도 1. 공통된 필드와 메소드의 이름을 통일할 목적입니다. 실체 클래스를 설계하는 사람이 여러 사람일 경우, 실체 클래스마다 필드와 메소드가 각각 다른 이름을 가질 수 있습니다. 데이터와 기능이 모두 동일함에도 불구하고 이름이 다르다 보니, 객체마다 사용 방법이 달라집니다. 따라서 추상 클래스를 사용하면 필드와 메소드 이름을 통일할 수 있습니다. 2...
다형성의 개요 다형성은 사용 방법은 동일하지만 다양한 객체를 이용해서 다양한 실행결과가 나오도록 하는 성질입니다. 예를 들어, .. 다시 작성 다형성을 구현하려면 메소드 재정의와 타입 변환이 필요합니다. 자동 타입 변환 타입 변환은 타입을 다른 타입으로 변환하는 것을 말합니다. 여기서 클래스도 자동 타입 변환을 할 수 있고, 클래스의 변환은 상속 관계에 있는 클래스 사이에서 발생합니다. 자동 타입 변환은 프로그램 실행 도중에 자동적으로 타입 변환이 일어나는 것입니다. 부모타입 변수 = 자식타입; * 다형성과 관련된 자동 타입 변환의 특징 1. 변수가 부모 타입으로 자동 타입 변환된 이후에는 부모 클래스에 선언된 필드와 메소드만 접근이 가능합니다. 2. 변수는 자식 객체를 참조하지만 변수로 접근한 멤버는 ..