1. 중첩 클래스(nested class)
1) 클래스안에 또다른 클래스가 정의되는 것.
2) 특정 클래스를 자신의 클래스 내부적인 용도로만 사용.
3) 멤버로 존재하는 Innner 클래스 : 객체를 생성해야만 사용할 수 있는 형태.
4) static Innner 클래스 : Outer 클래스 객체 생성하지 않아도 Innner 클래스 접근 가능
5) 메서드 지역(local)안에 존재하는 Innner 클래스
- 로컬 변수처럼 인식
- 메서드 호출될때 생성되며 메소드가 종료될때 삭제 됨.
6) 익명 클래스
- 이름이 없는 클래스로 단 한번 임시적으로 사용하는 클래스로 유용
- 인터페이스, 클래스 모두 익명 클래스로 객체를 생성할수 있음.
- 인터페이스 구현 없이 생성과 동시에 오버라이드 가능
- 익명 클래스 내부에서는 멤버 변수를 참조할수 있음.
2. 예외 클래스
1) Exception 클래스
- RuntimeException => try / catch 문을 사용하여 예외를 처리
2) String getMessage() : 해당 throwable 객체에 대한 자세한 내용을 문자열로 반환
void printStackTrace() : 해당 throwable 객체와 표준 오류 스트림의 스택 내용 출력
디버깅 용도. 배포시에는 삭제 처리해줘 함.
3) 자주 발생되는 예외들
- ArrayIndexOutOfBoundsException (배열에 잘못된 인덱스를 사용하여 접근할 경우)
- NollPointerException (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 클래스 => 상속 불가능
'Web > Java' 카테고리의 다른 글
Java(32) - WebSocket (0) | 2022.02.09 |
---|---|
Java(31) - 멀티스레드2 (0) | 2022.01.28 |
Java(28) - IO입출력 (0) | 2022.01.28 |
Java(27) - 예외처리 (0) | 2022.01.28 |
Java(26) - Stream (0) | 2022.01.28 |
댓글