본문 바로가기

반응형

자바 (Java)/요약

Chpt 8. 예외 - 주제 1. 프로그램 오류의 종류 어떠한 이유로 프로그램이 오동작하거나 종료되기도 한다. 이러한 이유를 바로 프로그램 오류라고 한다. 프로그램 오류에는 다음과 같은 종류가 있다. 모든 런타임 에러는 클래스이며 다음과 같은 상속 계층도를 갖는다. [참고 1] 사용자 정의 예외 클래스 다음과 같은 방법으로 사용자 정의 예외 클래스를 만들 수도 있다. (1) 상속 받을 예외 클래스를 extends 키워드를 통해 상속 받는다. (2) 예외 클래스의 생성자 안에 생성자 super를 추가해 예외 메시지를 설정할 수 있게 만든다. 참고로 선택적 처리가 가능한 RuntimeException 예외 클래스를 주로 상속 받는다. 오류의 분류 기준에는 네 가지가 있다. 1. 오류 발생 시점 오류 발생 시점에 따라 컴파일 도중에 발생하는 컴파일 에러, 실행 도.. 더보기
Chpt 7. 객체 지향 프로그래밍 2 - 주제 6. 내부 클래스 1. 내부 클래스 내부 클래스는 외부 클래스 안에 선언된 클래스이다. 외부 내부 클래스 간의 멤버 접근이 용이하고 클래스를 감춤으로서 캡슐화를 실현시킬 수 있다는 장점이 있다. 내부 클래스에는 인스턴스, static, 지역 내부 클래스 그리고 예외로 익명 내부 클래스가 있다. 내부 클래스도 클래스 안에 선언될 수 있는 모든 변수의 특징과 같은 특징을 공유한다. class Outer { class InstanceInner {} // 인스턴스 내부 클래스 static class StaticInner {} // static 내부 클래스 void myMethod() { class LocalInner {} // 지역 내부 클래스 } } 1) 내부 클래스의 특징 내부 클래스의 특징을 알아보자. (1) static .. 더보기
Chpt 7. 객체 지향 프로그래밍 2 - 주제 5. 추상클래스와 인터페이스 1. 추상메서드 추상메서드는 구현부 없이 선언부만 존재하는 메서드이다. 다음과 같은 방식으로 사용한다. abstract 리턴 타입 메서드 이름(); 2. 추상클래스 추상 클래스는 추상 메서드를 포함하고 있는 클래스이다. 다음과 같은 방식으로 사용한다. abstract class 클래스 이름 {} 추상 클래스와 추상 메서드에는 다음과 같은 특징이 있다. (1) 추상 메서드를 단 하나라도 포함하고 있으면 추상 클래스이다 (2) 추상 클래스는 상속을 통해 자손 클래스로 구현을 완료한 다음, 인스턴스를 생성할 수 있다. (3) 자손 클래스의 메서드 중에 단 하나라도 구현이 되지 않은 추상 메서드가 있다면 그 자손 역시 추상클래스이다. (4) 추상 타입 참조변수 = 구현 완료한 자손 타입의 인스턴스 (5) 추상 .. 더보기
Chpt 7. 객체 지향 프로그래밍 2 - 주제 4. 다형성의 장점 2가지 1. 다형성 다형성이란 조상 타입의 참조 변수로 자손 타입의 인스턴스를 참조할 수 있다는 것이다. (1) 조상 타입 참조 변수 = 자손 타입 인스턴스 (2) 자손 타입 참조 변수 ≠ 조상 타입 인스턴스 앞서 참조 변수의 타입과 참조하는 인스턴스의 타입은 같다고 했지만 다형성을 이용하면 위와 같이 참조할 수도 있다. (2)와 같은 반대의 경우는 불가능하다. 참조 변수의 타입과 참조하는 인스턴스의 타입이 같은 경우랑 비교할 때, (1)에서는 참조할 수 있는 멤버의 개수가 줄어든다. 참조 변수가 사용할 수 있는 멤버의 개수 캐스트 연산자 생략 가능 (자손 → 조상) 7번째 줄: 사용 가능한 멤버 수 4 → 5개 (안전 X) => 캐스트 연산자 생략 불가 (조상 → 자손) [참고 2] class Car {} c.. 더보기
Chpt 7. 객체 지향 프로그래밍 2 - 주제 3. 제어자 1. 제어자 제어자는 클래스, 변수, 메서드의 선언부에 사용되어 부가적인 의미를 더해주는 형용사와 같다고 생각하면 된다. 제어자에는 다음과 같은 종류가 있다. 접근 제어자 public, protected, (default), private 그 외 static, final, abstract, ... 1) 그 외 (1) static - 클래스의, 공통적인 사용 인스턴스 생성 여부 인스턴스 멤버 사용 가능 여부 참조 변수 this 사용 가능 여부 static (멤버) 변수 (cv) X X X static (멤버) 메서드 (cm) X X X static 초기화 블럭 (복잡 초기화) X X X 3, 4열은 모두 2열과 관련 있음을 알아두자. (2) final - 마지막의, 변경될 수 없는 대상 의미 클래스 상속 .. 더보기
Chpt 7. 객체 지향 프로그래밍 2 - 주제 2. 오버라이딩, 참조변수 super, 생성자 super() 1. 오버라이딩 조상의 메서드를 자손에 맞게 변경하는 것을 오버라이딩이라고 한다. 오버라이딩의 사전적 의미는 덮어쓰다이다. 오버라이딩의 조건은 다음과 같다. (1) 선언부가 조상 클래스의 메서드와 같다. (2) 접근 제어자 범위: 조상 클래스의 메서드 = 자손 클래스의 메서드 선언부는 반환 타입, 메서드 이름, 매개변수를 포함한다. (3)에서 단순히 개수가 중요한 것이 아니라 예외의 상속 관계 또한 중요하다. 예를 들어 조상의 메서드에서 IOException, SQLException을 throw 한다고 했을 때, 자손의 메서드에서 Exception을 throw 하면 Exception은 모든 예외의 최고 조상이므로 조상보다 많은 예외를 던지는 것이다. [참고 1] 조상의 static 메서드를 자손에서 정의.. 더보기
Chpt 7. 객체 지향 프로그래밍 2 - 주제 1. 클래스 간의 관계 - 상속, 포함 클래스 간의 관계 맺기도 결국 객체 지향의 장점을 살리는 방법 중 하나이다. 1. 상속 1) 정의와 방법 상속이란 기존의 클래스를 사용해 새로운 클래스 작성하는 것이다. 상속 받고 싶은 클래스 이름 옆에 extends 상속 받을 클래스 이름을 다음과 같이 적으면 된다. 이때, 상속 받고 싶은 클래스를 자손 (Child) 클래스, 상속 받을 클래스를 부모 (Parent) 클래스라고 한다. class Parent {} class Child extends Parent {} 2) 특징 상속에는 다음과 같은 특징이 있다. (1) 자손 클래스는 부모 클래스의 생성자와 초기화 블록을 제외한 모든 멤버를 상속 받는다. (2) 멤버의 개수: 자손 클래스 >= 부모 클래스 (3) 단일 상속만 허용한다. (4) 자손 클래스.. 더보기
Chpt 6. 객체 지향 프로그래밍 - 주제 6. 멤버, 지역 변수의 초기화 1. 멤버, 지역 변수의 초기화의 차이 멤버 변수 (cv, iv) (기본값으로) 자동 초기화 => 선택적 지역 변수 (lv) 수동 초기화 => 필수적 이때 자동 초기화되는 기본값은 0과 관련된 값이라고 생각하면 된다. 지역 변수는 수동으로 초기화이기 때문에 반드시 사용 전 초기화를 해주어야 한다. 2. 멤버 변수 초기화 순서 static 변수 (한 번만) 인스턴스 변수 (인스턴스 생성될 때마다) (1) 자동 초기화 (2) 간단 초기화 (=) (3) 복잡 초기화 (static {}) (4) 자동 초기화 (5) 간단 초기화 (=) (6) 복잡 초기화 ((6-1) {}, (6-2) 생성자) 인스턴스 변수의 복잡 초기화에서 인스턴스 초기화 블럭 {}은 잘 사용되지 않는다. [참고 1] 간단 초기화는 명시적 초기.. 더보기

반응형