Notice
Recent Posts
Recent Comments
Link
«   2026/05   »
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
Archives
Today
Total
관리 메뉴

ki-sd 님의 블로그

[2026-03-24] 다형성(Polymorphism)과 추상화(Abstraction)의 강력함 본문

JavaStudy

[2026-03-24] 다형성(Polymorphism)과 추상화(Abstraction)의 강력함

ki-sd 2026. 4. 17. 21:26

객체 지향 프로그래밍의 대미를 장식하는 가장 어렵지만 가장 강력한 무기, 다형성의 본질을 이해하고 추상화의 개념을 정립했다.

 

1. 다형성: 하나의 코드가 다양한 형태로 동작하는 원리

  • 업캐스팅(Upcasting): 자식 객체를 생성할 때, 이를 가리키는 리모컨(참조 변수)의 타입을 자식이 아닌 부모 타입으로 설정할 수 있다. (예: Animal a = new Dog();)
  • 동적 바인딩(Dynamic Binding): 부모 타입의 참조 변수로 오버라이딩된 메서드를 호출하면, 컴파일러는 부모의 메서드를 호출하는 것처럼 보이지만 실제 프로그램 실행(Runtime) 시점에는 힙 메모리에 생성된 자식의 재정의된 메서드가 실행된다.
  • 이를 통해 각기 다른 수많은 자식 객체들을 '부모 타입 배열' 하나로 묶어서 관리하거나, 하나의 매개변수로 모든 자식 객체를 받아 처리할 수 있게 되어 코드의 유연성이 극대화됨을 실습했다.

2. 추상 클래스(Abstract Class) - 설계의 규격화

  • 부모 클래스가 자신만의 완전한 기능을 갖기보다는, 자식들이 반드시 가져야 할 공통 기능의 '목차'만 제시해야 할 때 abstract 키워드를 사용한다.
  • 추상 메서드: 구현부 {} 없이 선언부만 존재하는 메서드로, 상속받은 자식 클래스는 반드시 이 메서드를 오버라이딩하여 구현해야 한다. 구현하지 않으면 컴파일 에러가 발생하여 강력한 설계 규격을 강제할 수 있다.
  • 추상 클래스는 미완성 설계도이므로 단독으로 new를 통해 객체를 생성할 수 없다. 오직 다형성을 위한 뼈대로서 작용하는 설계 기법을 마스터했다.