[자바/JAVA] 다형성이란? (+예제)

박정현·2023년 9월 26일
0

🏠자바의 기초완성

목록 보기
22/23

다형성

다형성은 무엇일까?

  • 사용방법은 동일하지만 다양한 객체를 활용해 여러 실행결과가 나오도록 하는 성질
  • 메소드 재정의타입 변환을 결합하여 구현
    • 오버로딩 → 같은 이름의 메소드
    • 오버라이딩 → 부모의 메소드를 상속받아서 구현
  • 하나의 역할이 여러가지 기능을 수행하는 방식
  • 부모타입의 객체 참조 변수로 자식객체를 참조할 수 있다. (상속관계)

int형은 int형만 가져올 수 있듯이 부모타입은 부모타입만 가져올 수 있음

예제로 이해해보자

  • 클래스 B는 A로 부터 상속받고 있다.
  • 새로운 객체를 생성했다.
    • 클래스B를 obj변수에 인스턴스화 하는데
    • 이 변수 obj는 클래스A의 데이터타입의 행세를 하고 있다.

  • 파란부분의 내용을 추가했다.
  • 변수 obj는 B클래스를 인스턴스 했지만 A클래스 행세를 하고 있기 때문에
  • A클래스의 메소드인 X메소드만 호출가능하고 Y메소드는 호출할 수 없다.
  • 즉, obj변수를 부모클래스처럼 동작시킬 수 있다.

  • 파란색부분의 내용을 추가했다
  • 클래스 A의 X메소드와 클래스B의 X메소드는 오버라이딩관계이다.
  • 그렇다면 클래스B에 담가있지만 클래스A의 행세를 하고 있는 obj는
    A클래스 메소드를 불러올까 B클래스 메소드를 불러올까?
    - 결과. B클래스의 X메소드만 호출할 수 있다.
  • 즉, obj변수는 B에 담고 있지만 A의 행세를 하고있기 때문에 A에 있는 메소드만 불러올 수 있다. 그러나 상위클래스를 오버라이징한 예외적인 경우인스턴스화시킨 B클래스의 메소드를 호출한다.
profile
개발을 개발괴발하지 않기 위한 노력

0개의 댓글