Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

공hannah부

캐스팅 / instanceof / 다형성 / 추상클래스, 추상메소드 본문

공부/JAVA

캐스팅 / instanceof / 다형성 / 추상클래스, 추상메소드

Hannah0226 2023. 5. 6. 20:24

캐스팅

업캐스팅이란?

  • 서브 클래스 객체를 슈퍼 클래스 타입으로 변환하는 것
  • 업캐스팅된 레퍼런스는 객체 내에 슈퍼 클래스의 멤버만 접근 가능하다
  • 부모 타입에는 모든 자식 객체가 대입 가능하기에 프로그램 실행 도중에 자동 타입 변환이 일어난다

 

다운캐스팅이란?

  • 업캐스팅 시킨 슈퍼 클래스 객체를 서브 클래스 타입으로 변환하는 것
  • 개발자의 명시적 타입 변환이 필요하다
  • 업캐스팅된 타입에 한하여 다시 자식으로 다운캐스팅 할 때는 강제변환해야한다.

 

자동 타입 변환

  • 바로 위의 부모가 아니더라도 상속 계층의 상위에 있다면 자동 타입 변환이 가능하다

객체연산자 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