본문 바로가기
JAVA

추상화와 다형성의 차이는?

by ddahu 2023. 8. 3.

 

객체 지향 프로그래밍은 SW 개발에서 중요한 개념인 추상화와 다형성을 기반으로 한다. 이 두가지 개념은 소프트웨어의 유연성, 재사용성 및 유지보수성을 향상 시키는데 핵심적인 역할을 한다. 이때 차이점은 무엇인가???

 


 

추상화 (Abstractization) : 추상화는 복잡한 현실 세계를 단순화 하여 핵심적인 개념만을 남기고 세부 사항을 무시하는 프로그래밍 개념이다.

추상화를 통해 객체들은 공통된 특징과 동작을 추출하고, 이를 기반으로 추상 클래스나 인터페이스를 정의 할수 있으며 추상화는 현실 세계의 복잡성을 다루며 코드의 재사용성 과 유지보수성을 높여준다.

 

 

다형성(Polymorphism): 다형성은 객체지향 프로그램밍의 중요한 개념으로, 같은 인터페이스나 추상 클래스를 상속 받아 다양한 하위 클래스들이 각자 다른 방식으로 동작하는 것을 의미한다. 다형성은 같은 메서드를 호출 하지만 다른 클래스에 따른 다른 동작을 하게 함으로써 유연하고 확장 가능한 코드를 작성 하게 하여 코드의 가독성과 확장성을 증가시켜 새로 추가를 하더라도 기존 코드의 수정을 최소화할수 있다.

 

 


추상화 와 다형성의 차이?

 

  • 추상화는 개념을 단순화 하고 핵심적인 특징을 도출하는 과정이다
  • 추상화는 주로 클래스간의 공통점을 찾아내는 것에 중점을 두지만 다형성은 이러한 클래스들이 다양한 방식으로 동작하도록 하는것에 중점을 둔다.
  • 추상화는 상속을 통해 구현되는 경우가 많으며, 추상 클래스나 인터페이스를 통해 실제 클래스들의 공통특징을 정의한다. 다형성은 이러한 추상화된 개념을 실제 객체에 적용하여 다양한 동작을 구현한다.

 

 

적용 예시

 

추상화 : '동물' 이라는 추상 클래스를 정의 할때 이 클래스는 '울음 소리를 내는 메서드' 를 포함 할 수 있다. 이때 모든 동물이 울음 소리를 낸다는 공통점을 추상화 하여 나타낸 것이다.

 

다형성: '강아지' / '고양이' 클래스를 '동물' 클래스를 상속 받아 정의 할때, 강아지 클래스는 '왈왈' 고양이는 ' 야옹 ' 이라는 울음소리를 낼 수 있도록 각자 다른 기능을 하게 만들어주는 것이 다향성 이다.