☕JAVA/🐣 강의 [JAVA]

[JAVA][기초] up-casting / down- casting 과 다형성 polymorphism

디카페인라떼 2022. 10. 11. 17:42

[기초] 시리즈는 본강의를 수강후 정리한 글들 입니다.

Java for Beginner - YouTube

 

Java for Beginner

[교재 link] https://github.com/namoosori/java-for-beginner/tree/master/doc Java for Beginner 강의에서 다루는 내용은 다음과 같습니다. - Java 개요 : Java 언어가 어떤 언어이고 Java 언어를 이용해 프...

www.youtube.com


Strongly typed Language vs Loosely typed language
  • Strongly typed Language
    • 데이터의 타입을 미리 정의하고 사용하고, 한번 정의된 데이터 타입은 프로그램 종료까지 변하지 않는 것
    • 프로그램 개발에 있어 명확함과 구체성을 제공
    • 많은 프로그램 언어들이 적용하고 있음. (자바, C++ ...)
    • 다만, 프로그램의 유연성 제약이라는 단점
  • Loosely typed language
    • Javascript
객체 간 타입 형 변환

  • 자바에서 예외적으로 Strongly typed language가 적용되지 않는 경우가 있음
  • up-casting
    • 상속 관계에서 자식 클래스가 부모 클래스 타입으로 참조되는 것이 허용
  • down-casting
    • 한번 부모 클래스 타입의 클래스로 참조가 이루어진 이후 다시 자식 클래스로 참조하는 것
객체간 타입 형변환 시 메소드 

  • 상속관계가 성립되어 있고 자식 클래스의 인스턴스가 부모 클래스 타입의 변수로 참조되면 실제 인스턴스화 객체가 자식 객체일 경우에도 자식 클래스가 갖고 있는 인스턴스 메소드는 호출할 수 없음.
  • 부모 클래스 타입의 변수로 참고하고 있는 자식 인스턴스 객체의 메소드를 호출하기 위해서는 down-casting이 이루어져야 함.
  •  단, 재정의 하고 있는 메소드(오버라이딩된 메소드)의 경우 up-casting 상황에서도 자식 클래스의 재정의 메소드가 호출
  •  up-casting 되어있을 때 부모 클래스와 자식클래스에서 겹치는 메소드를 호출했을 때는 자식클래스의 메소드가 호출된다!
    • 오버라이딩된 메소드는 부모 클래스의 타입을 띄고 있을지라도 자식 객체의 메소드가 호출이 된다
    •  자식 객체에만 있는 메소드를 호출하려는 경우 down-casting을 먼저 꼭 해주어야 함.
객체간 타입 형변환의 이점
  • 상속 관계에서 객체간의 타입 형변환은 객체를 관리하는데 있어 큰 이점을 제공
  • 자식 클래스가 부모 클래스 타입의 변수로 참조 가능하기 때문에 같은 부모 클래스를 상속하는 모든 자식 클래스들을 하나의 타입으로 관리 가능
  • 이와 같은 객체의 관리는 프로그램의 복잡성을 크게 개선 가능

 


다형성 polymorphism

  • 다형성 polymorphism  
    • 하나의 객체가 다양한 형태로 처리될 수 있는 특성
      • poly (many) + Morphism (Behavior)
    •  다형성을 구현하기 위한 조건
      • 상속
      • 재정의 메소드(오버라이딩)
      • 객체간의 형변환(up-casting) 
    • 다형성의 이형 집합을 통한 구현 방식과 파라미터를 통한 구현 방식으로 구분 가능 (이렇게 두가지가 존재한다 정도로만 이해)