JAVA를 잡아라!...

JAVA_11_다형성 & 타입 변환 본문

JAVA/JAVA_멘토씨리즈

JAVA_11_다형성 & 타입 변환

onivv 2024. 1. 7. 14:24

#1 클래스에서의 타입 변환

  • 자료형(타입) 변환
  • 클래스의 객체 타입 변환: 클래스의 타입 변환은, 상속 관계의 클래스들 간에서만 가능

▶ 클래스 자동 타입 변환

  • 개발자가 직접 명시해주지 않아도 자동으로 타입 변환이 일어나는 것
  • 상속 관계에 있는 자식 클래스의 객체부모 타입의 객체로 변환
  • 부모 타입으로 변환한 자식 객체는, 부모 클래스에 선언된 멤버(필드, 메서드)만 사용 가능
  • 단, 부모 클래스의 메서드를 @오버라이딩한 메서드는 자식 객체의 것을 호출 가능

▶ 클래스 강제 타입 변환

  • 자식 객체가 부모 타입으로 자동 타입 변환 한 후, 다시 자식 타입으로 변환하는 것
  • 개발자가 직접 명시해야만 타입 변환 가능

 

#2 다형성(polymorphism)

▶ 다형성이란?

  • 객체 지향 프로그래밍의 대표적인 특징 중 하나
  • 하나의 타입으로 다양한 객체를 사용할 수 있는 것
  • 다형성 구현: 상속 + 메서드 오버라이딩 + 클래스 타입 변환
  • ex) 객체를 필드로 가지는 클래스에서 객체 타입을 자식 말고 부모 클래스 타입으로 생성

 

#3 instanceof 연산자

▶ 객체 instanceof 타입(클래스명)

  • instanceof 기준으로 왼쪽 객체가 생성될 때 오른쪽 타입으로 생성되었는지 확인하는 연산자
  • 맞으면 true, 아니면 false를 반환해 만약 null을 가리키고 있으면 false를 반환
    • A instanceof B : 객체 변수 A가 객체 타입 B로 생성된 것인지 확인
    • C == D : 객체 변수 C와 객체 변수 D가 같은 객체를 참조하는지 확인

 

#4 오버로딩 & 오버라이딩

  • 오버로딩: 매개변수의 자료형/개수/순서를 기반으로 메서드를 구별하므로 하나의 클래스 안에서 같은 이름의 메서드를 여러개 구현 가능, 필요에 따라 메서드를 선택해 사용 가능
  • 오버라이딩: 부모 클래스에게 상속받은 메서드를 재정의하여 자식 클래스용 메서드를 구현하고 자식 객체를 통해 메서드를 호출할 땐 오버라이딩된 메서드가 호출됨
  • ==> 오버로딩은 새로운 메서드를 정의하는 것, 오버라이딩은 상속받은 기존의 메서드를 재정의하는 것

'JAVA > JAVA_멘토씨리즈' 카테고리의 다른 글

JAVA_13_내부 클래스  (0) 2024.01.07
JAVA_12_추상 클래스 & 인터페이스  (0) 2024.01.07
JAVA_10_상속  (0) 2023.12.31
JAVA_09_생성자  (0) 2023.12.31
JAVA_08_메서드  (0) 2023.12.31