에러와 예외 프로그램이 실행 중 어떤 원인에 의해 오작동을 하거나 비정상적으로 종료되는 경우가 있는데, 이러한 결과를 초래하는 원인을 프로그램 에러 또는 오류라고 한다. 자바에서는 실행 시 발생할 수 있는 프로그램 오류를 에러(error)와 예외(exception) 두 가지로 구분한다. 에러는 메모리 부족(OutOfMemoryError)나 스택오버플로우(StackOverflowError)와 같이 일단 발생하면 복구할 수 없는 심각한 오류이고, 예외는 발생하더라도 수습될 수 있는 비교적 덜 심각한 문제이다. 에러가 발생하면 프로그램의 비정상적인 종료를 막을 수 없지만, 예외는 발생하더라도 적절한 코드를 미리 작성함으로써 비정상적인 종료를 막을 수 있다. 에러(Error): 프로그램 코드에 의해서 수습될 수..
인터페이스란? 일종의 추상 클래스지만, 추상 클래스보다 추상화 정도가 높다. 일반 메소드 또는 멤버변수를 멤버로 가질 수 없고, 추상 메소드와 상수만을 멤버로 가질 수 있다. 추상 클래스가 미완성 설계도라면 인터페이스는 일반 설계도라고 할 수 있다. 인터페이스 정의 인터페이스는 기본적으로 클래스와 동일한 방식으로 정의한다. 클래스와 동일하게 접근제어자로 public 또는 default를 사용한다. 하지만, 키워드로 interface를 사용한다는 차이가 있다. innterface 인터페이스이름 { public static final 타입 상수이름 = 값; public abstract 메소드이름 (매개 변수); } 클래스의 멤버와 달리 인터페이스의 멤버들은 다음과 같은 제약사항이 있다. 모든 멤버변수는 pu..
패키지 패키지란? 클래스의 묶음 패키지에는 클래스 또는 인터페이스가 포함된다. 클래스의 실제 이름은 패키지명을 포함한 것이다(ex: java.lang.String). 패키지를 통해 클래스 이름이 충돌하는 문제를 피할 수 있다. 패키지의 특징 하나의 소스파일에는 첫 번째 문장으로 단 한 번의 패키지 선언만을 허용한다. 모든 클래스는 반드시 하나의 패키지에 속해야 한다. 패키지는 점(.)을 구분자로 하여 계층구조를 구성한다. 패키지는 물리적으로 클래스 파일(.class)을 포함하는 하나의 디렉토리이다. - 하나의 소스파일에는 첫 번째 문장으로 단 한 번의 패키지 선언만을 허용한다. - 모든 클래스는 반드시 하나의 패키지에 속해야 한다. - 패키지는 점(.)을 구분자로 하여 계층구조를 구성한다. - 패키지는 ..
상속 상속이란 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 상속을 통해 클래스를 작성하면 보다 적은 양의 코드로 새로운 클래스를 작성할 수 있고, 코드를 공통적으로 관리할 수 있으므로 코드의 추가 및 변경이 매우 용이하다. 결국 상속을 통해 코드의 재사용성을 높이고 코드의 중복을 제거하여 프로그램의 생산성과 유지보수에 크게 기여할 수 있다. 자바에서 상속은 다음의 형태를 띈다. class Child extends Parent { // ... } 위의 두 클래스는 서로 상속 관계에 있다고 하며, 상속해주는 클래스를 조상 클래스라 하며, 상속 받는 클래스를 '자손 클래스라 한다. 서로 상속 관계에 있는 두 클래스를 다음의 용어로 표현하기도 한다. 조상 클래스: 부모(parent)클래스, 상위..
클래스와 객체 클래스와 객체는 객제지향 프로그래밍(OOP)에서 빠질 수 없는 개념이다. 클래스란 '객체를 정의해놓은 것' 또는 '객체의 설계도/틀'로 정의할 수 있으며, 객체는 '실제로 존재하는 것' 또는 '사물 또는 개념'으로 정의할 수 있다. 객체는 좀 더 단순하게 '다루고자 하는 대상' 정도로 생각해도 좋을 듯하다. 클래스(Class): 객체를 정의해놓은 것, 객체의 설계도 객체(Object): 실제로 존재하는 것, 사물 또는 개념 인스턴스와 객체의 관계 클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화(instantiate)라고 하며, 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스(instance)라고 한다. 결국 인스턴스와 객체는 같은 의미이지만, 객체는 모든 인스턴스를 대표하는 포..