본문 바로가기
코딩일기/Java

[Java] 추상화와 다형성의 의미 그리고 둘의 차이점

by 욱파이어니어 2022. 10. 21.
728x90
반응형

Java에서 추상화와 다형성은 객체지향 프로그래밍에서의 가장 중요한 개념이다. 

그래서 이 둘의 개념에 대해서 정확히 알면 나중에 코딩할때와 면접볼때 엄청나게 중요한 역할을 할것이다.

 

그럼 이제 알아보도록 하자.

 

 

추상화란?

 

추상화는 공통적인것들을 하나로 모아두는것이다. 

예를 들어서 설명을 쉽게 하겠다.

 

고양이 과 동물은 여러 동물이 있다.

사자, 호랑이, 표범, 고양이 등등

 

이들 모두 다른 동물이지만 고양이과라는 공통적인 특징이 있다.

그래서 고양이과 동물들이 가지는 특징적인 행동들을 조금씩 다른방식이지만 모두 한다.

ex) 박스를 좋아한다.

 

 

이처럼 프로그래밍에서도 공통되는 특징을 가진 클래스들을 하나로 모아 추상화 하는것이다. 

그리고 그 모은것들을 추상클래스 혹은 인터페이스를 통해 만들면 같은 특징을 가지는 클래스라면 해당 클래스를 

상속 받아서 사용하면 되기때문에 코드의 재사용성을 높일수가 있다.

 

 

 

 

그렇다면 다형성은 무엇일까??

 

 

 

다형성이란?

 

다형성은 추상화와 매우 연관되어 있다.

다형성은 하나의 공통되는 메소드가 상속 받은곳에서 모두 다른 동작을 하는것이 다형성이다.

 

다형성을 쉽게 설명해줄시있는데는 가장 대표적인 예가 

아래 사진이다.

 

 

탈것에는 여러 종류가 있다.

자동차, 오토바이, 비행기 등등

하지만 이들 모두 움직이는 방법인 move() 모두 다르다.

자동차는 4바퀴로 움직이고 오토바이는 두바퀴로 움직이고 비행기는 날아간다.

따라서 모두 move()를 하지만 서로 방식이 다 다른것이다.

 

이처럼 하나의 공통되는 메소드가 상속받은곳에서 모두 다른 동작을 하는것이 다형성이다.

 

 

 

 

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

추상화는 클래스들의 공통적인 부분들을 찾아서 재사용이 가능한 클래스를 설계하는것이고

다형성은 공통적인 메소드로 여러가지 기능들을 만들어 낼수 있는것이 다형성이다.

그리고 추상화는 인터페이스와 추상클래스로 구현되는 반면에 다형성은 오버라이딩과 오버로딩으로 구현이 된다.

 

반응형

'코딩일기 > Java' 카테고리의 다른 글

[Java] JVM 구조 및 작동 원리  (0) 2022.10.14
[Java] ClassLoader 구조 및 동작 원리  (0) 2022.10.14
[Java] Java 동작 원리  (0) 2022.10.13
BufferedReader와 BufferedWriter  (0) 2021.07.22
[Java] ArrayList 란?  (0) 2021.06.18