공hannah부
캐스팅 / instanceof / 다형성 / 추상클래스, 추상메소드 본문
캐스팅
업캐스팅이란?
- 서브 클래스 객체를 슈퍼 클래스 타입으로 변환하는 것
- 업캐스팅된 레퍼런스는 객체 내에 슈퍼 클래스의 멤버만 접근 가능하다
- 부모 타입에는 모든 자식 객체가 대입 가능하기에 프로그램 실행 도중에 자동 타입 변환이 일어난다
다운캐스팅이란?
- 업캐스팅 시킨 슈퍼 클래스 객체를 서브 클래스 타입으로 변환하는 것
- 개발자의 명시적 타입 변환이 필요하다
- 업캐스팅된 타입에 한하여 다시 자식으로 다운캐스팅 할 때는 강제변환해야한다.
자동 타입 변환
- 바로 위의 부모가 아니더라도 상속 계층의 상위에 있다면 자동 타입 변환이 가능하다
객체연산자 instanceof
instanceof 연산자?
- 레퍼런스가 가리키는 객체의 타입을 식별하기위해 사용된다.
- 어떤 클래스로 만들어진 객체인지 비교 가능하다.
- 인자가 Up/Down 캐스팅 되었을 때도 비교 가능하다.→ 업캐스팅 레퍼런스가 가리키는 객체의 타입을 알 수 있다.
- 사용법: 객체레퍼런스 instaceof 클래스타입
- 연산결과: bool값 리턴
다형성
다형성이란?
- 상속 계층에서의 클래스 행위릐 차이점을 강조한다.
- 상위 클래스에서 정의한 추상 메소드 및 미완성된 메소드들은 하위클래스에서 완성한다.
다형성의 성질
- 상속 계층상의 객체의 위치에 따라 어떤 메소드를 호출할지 결정하는 능력을 갖는다.
- 하위 클래스에서 메소드를 찾고, 없으면 상위클래스로 올라오면서 찾아 결정한다.
매개변수를 이용한 다형성
- 자동 타입변환: 매개변수가 클래스 타입일 경우, 해당 클래스의 객체 대입이 원칙이나, 해당 클래스로 참조가능한 하위객체 대입도 가능하다.
- 강제 타입변환: 다운캐스팅
- 업캐스팅 후 다시 다운캐스팅 할 때만 가능하다 → 객체 타입을 확인해야한다(instaceof)
추상 클래스와 추상 메소드
추상 클래스란?
- 실체 클래스 생성목적이 아닌, 상속/참조용 클래스이다. → 실체 클래스의 공통되는 필드와 메소드만 정의한 클래스
- 구체적인 행위는 하위클래스에서 오버라이딩해 완성하면 되므로 불충분한 추상적 객체를 표현한다.
- 추상 클래스는 추상 메소드를 포함할 수 있다.
추상 메소드란?
- body는 없고 prototype만 있는 메소드이다.
추상 클래스의 용도
- 설계와 구현 분리: 슈퍼 클래스에서는 개념만 정의 → 서브 클래스마다 다른 구현이 필요한 메소드는 추상 메소드로 선언한다.
- 계층적 상속 관계를 갖는 클래스 구조를 만든다
추상 클래스와 추상 메소드 형태
- 추상 클래스의 두가지 형태
- 추상 메소드를 하나라도 가진 클래스: 클래스 앞에 반드시 abstract 선언
- 추상 메소드가 하나도 없지만 abstract로 선언된 클래스: 설계용으로 참조나 상속이 목적이다
- 추상 메소드
- abstract로 선언한다.
- 서브 클래스에서 반드시 오버라이딩 하여 구현해야한다.
- 추상 메소드가 하나라도 있는 클래스는 추상 클래스로 선언해야한다.
'공부 > JAVA' 카테고리의 다른 글
제네릭(Generic) (0) | 2023.05.21 |
---|---|
예외처리(Exception Handling) (0) | 2023.05.21 |
JAVA 공부 3일차 - 자바 핵심 개념 정리1 (0) | 2023.03.10 |
JAVA 공부 2일차 - 입출력 익히기 (0) | 2023.03.08 |
JAVA 공부 1일차 - JAVA란? (0) | 2023.02.22 |