@Eeap
velog
@Eeap
전체 방문자
오늘
어제
  • 전체 (168)
    • osam (1)
    • Cloud (21)
      • Docker (2)
      • AWS (13)
    • AI & Data (7)
    • Algorithm (76)
      • Baekjoon (75)
      • Codeforces (1)
    • Language (18)
      • Java (18)
    • Back-end (17)
      • Spring (3)
      • JSP & Servlet (12)
      • Go (2)
    • 일상 (4)
    • 기타 (8)
    • git (1)
    • Infra (9)
      • Apache Kafka (5)
      • Kubernetes (4)
      • 기타 (0)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • bedrock api
  • SageMaker
  • 심폴릭링크
  • invokemodel api
  • sagemaker unified studio
  • CLASS
  • flink
  • AWS CodeStar
  • java
  • AWS CodeArtifact
  • 티스토리챌린지
  • Python
  • converse api
  • bedrock agent
  • Agent
  • 오블완
  • bedrock
  • 인터페이스
  • AWS CodeCatalyst
  • knowledge bases

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
@Eeap

velog

Language/Java

Java 타입 변환과 다형성

2022. 6. 6. 19:23
반응형
인터페이스의 다형성

인터페이스는 동일한 인터페이스로 구현 객체를 교체해서 다양한 프로그램 실행 결과를 얻을 수 있다.

자동 타입 변환

구현 객체와 그 구현 객체의 자식 객체는 인터페이스 타입으로 알아서 자동 타입 변환이 된다.

Interface_Name var = new Test(); // Test의 자식 객체도 구현 객체처럼 사용할 수 있음.

 

강제 타입 변환

보통 구현 객체가 인터페이스 타입으로 자동 변환 되면 인터페이스에 있는 메소드만 사용이 가능한데

구현 객체에서만 선언된 필드나 메소드를 사용할 필요가 있을 경우엔 강제 타입 변환이 필요하다.

interface Vehicle{
 void run(){}
}
class Bus implements Vehicle{
 void run(){}
 void only(){}
}

// main part
Vehicle vehicle = new Bus();

//강제 타입 변환
Bus bus = (Bus) vehicle;

bus.only();

 

마찬가지로 강제 타입 변환 했을 때 정확한 구현 객체가 변환되어 있는지 알 수 없기 때문에 ClassCastException 오류가 발생할 수 있다.

따라서 instanceof 연산자를 사용하여 타입을 변환해야한다.

//강제 타입 변환
if (vehicle instanceof Bus){
 Bus bus = (Bus) vehicle;
 bus.only();
}

 

인터페이스 상속

인터페이스의 경우엔 다중 상속이 가능한데 선언부는 다음과 같다.

public interface 하위인터페이스 extends 상위1, 상위2 {}

하위인터페이스의 구현 객체의 경우엔 상위와 하위 인터페이스 내에 있는 메소드를 모두 재정의 해야하고 하위인터페이스 스 타입뿐만 아니라 상위 인터페이스의 타입도 자동 타입 변환이 가능하다.

하위인터페이스 var = new 구현객체();
상위1 var1 = new 구현객체();
상위2 var2 = new 구현객체();

 

반응형
저작자표시 (새창열림)

'Language > Java' 카테고리의 다른 글

Java 익명 객체  (0) 2022.06.12
Java 중첩 클래스와 중첩 인터페이스  (0) 2022.06.11
Java 인터페이스  (0) 2022.05.30
Java 추상클래스  (0) 2022.05.30
Java 타입 변환과 다형성  (0) 2022.05.27
    'Language/Java' 카테고리의 다른 글
    • Java 익명 객체
    • Java 중첩 클래스와 중첩 인터페이스
    • Java 인터페이스
    • Java 추상클래스
    @Eeap
    @Eeap

    티스토리툴바