-
30. Review개발자 수업/Java 2021. 10. 25. 18:14
1. 중첩 클래스(nested class)
1) 클래스 안에 또 다른 클래스가 정의되는 것
2) 특정 클래스를 자신의 클래스 내부적인 용도로만 사용
3) 멤버로 존재하는 inner 클래스 : 객체를 생성해야만 사용할 수 있는 형태
4) static inner 클래스 : outer 클래스 객체를 생성하지 않아도 inner 클래스에 접근 가능
5) 메서드 지역(local) 안에 존재하는 inner 클래스
- 로컬 변수처럼 인식
- 메서드 호출될 때 생성되며 메서드가 종료될 때 삭제됨
6) 익명 클래스
- 이름이 없는 클래스로 단 한 번 임시적으로 사용하는 클래스로 유용
- 인터페이스, 클래스 모두 익명 클래스로 객체를 생성할 수 있음
- 인터페이스 구현 없이 생성과 동시에 오버라이드 가능
- 익명 클래스 내부에서는 멤버 변수를 참조할 수 있음
2. 예외 클래스
1) Exception 클래스
- RuntimeException => try / catch 문을 사용하여 예외를 처리
2) String getMessage() : 해당 throwable 객체에 대한 자세한 내용을 문자열로 반환
void printStackTeace() : 해당 throwable 객체와 표준 오류 스트림의 스택 내용 출력
디버깅 용도. 배포 시에는 삭제 처리해야 함
3) 자주 발생하는 예외들
- ArrayIndexOutOfBoundsException (배열에 잘못된 인덱스를 사용하여 접근할 경우)
- NullPointerException (null 객체의 인스턴스 메서드를 호출하는 경우)
- ArithmeticException (정수를 0으로 나누는 등 연산 수행을 할 수 없는 경우)
- ClassCastException (수행할 수 없는 타입 변환이 진행될 경우)
4) 예외 처리
try {
//예외 발생 가능성 있는 코드
} catch (Exception e1) {
e1 예외가 발생할 경우
} catch (Exception e2) {
e2 예외가 발생할 경우
} finally {
//예외 발생 여부와 상관없이 무조건 실행
}
3. 다형성(polymorphism)
1) 다형성 목적
- 여러 형의 객체에 동일한 코드 사용 목적
- 매개변수로 식별 (오버로딩)
- 가까운 재정의된 메소드 선택 (오버라이딩)
2) 오버로딩(overloading)
- 매개변수를 다르게 구성할 수 있음
- 매개변수의 개수, 타입(자료형), 순서를 달리해서 구성
- 메소드 이름이 같아야 함
- 같은 클래스 내부의 메서드에 적용됨
- 정적 다형성(static polymorphism)의 예로 볼 수 있음
- 오버로딩이 되지 않는 것 : 리턴 타입, 매개변수 이름
4. 하위 클래스 메서드의 선택
1) 하위 클래스로부터 만들어진 객체
- is-a 관계에 의해 부모클래스 자료형 사용 가능
Cat cat = new Cat();
Animal animal = new Cat(); //상위 타입 참조 변수 사용
- 상위 클래스 타입의 참조변수로 하위 클래스의 인스턴스를 참조할 수 있는 것
- 상속 관계에 있는 클래스에서만 가능
- 상위 타입 참조변수 사용 시 하위 클래스의 고유의 기능은 사용할 수 없음
5. 캐스팅
1) 업 캐스팅
Animal animal = null;
Cat cat = new Cat();
animal = cat; //up-casting
animal.hunt();
2) 다운 캐스팅
Cat cat = null;
cat = (Cat)animal; //down-casting
cat.sound();
6. final 키워드
1) final 속성 변수 ==> 상수 (상수 선언 시 초기화를 해야 함, 변경 불가)
2) final 메소드 => 오버라이딩 불가
3) final 클래스 => 상속 불가능'개발자 수업 > Java' 카테고리의 다른 글
문제 1 - Chap13 / kr.co.ezenac.review02 (0) 2021.10.26 31. 멀티스레드2 (0) 2021.10.25 29. 멀티스레드 (0) 2021.10.22 28. IO입출력 (0) 2021.10.20 27. 예외처리 (0) 2021.10.20