프로그래밍 언어/JAVA

객체 지향(OOP)의 특징

Minerva579 2024. 10. 4. 18:00
반응형

 

 

 

안뇽!

 

 

 

 

이전 글에서는 객체지향프로그래밍의 정의와 객체란 무엇인지

그리고 객체의 특징이 무엇인지 알아보았다.

 

 

이번 포스팅에서는 객체 지향의 특징 4가지에 관해서 아주 쉽게 짧지는 않을 수도 알아보자!

 

 

- 오늘의 용어 키워드 -

1. 캡슐화(Encapsulation)

2. 상속 (Inheritance)

3. 다형성 (Polymorphism)

4. 추상화 (Abstraction)

 

 

 1. 캡슐화란? 이전 글에서 캡슐화에 관해 예시를 들어 설명하였다.

다시 한번 이 글에서 짧게 설명한다면

 

캡슐화란 데이터와 메소드(기능)를 하나의 객체로 만들어(묶어)

외부에서는 직접 접근하지 못하게 보호하는 것을 의미한다고 하였다.

(잘 이해가 되지 않는다면 이전 포스팅 참고)

 

 

그럼 상속이란 무엇인가? 상속을 예시를 들어 설명하겠다.

 

내가 GOD 이다.

 

 

어느날 신 님이 인간과는 다른 동물이라는 것을 만들기 위해

상위 카테고리(클래스)를 탄생시켰다.

 

그리고 동물이라는 클래스 정보에는

동물의 이름, 나이 등등과 같은 정보(속성)

그리고 먹다, 싼다와 같은 단순한 메소드(기능)를 만들어 두었다.

 

이제 모든 동물이 가져야 되는 법칙을 만들었으니 인류의 반려

댕댕이부터 만들어 보려고 한다.

 

댕댕이라는 하위 카테고리(클래스)를 만들고 요기에 부모 카테고리(클래스)인

동물(클래스)의 속성 및 기능을 상속받는다.

 

왜냐? 한 마리 만들 때마다

계속 같은 속성, 기능을 반복해서 만들면 비효율적이니깐 귀찮잖어 

이를 위해 상위 카테고리 부모 클래스를 만든 것이다.

 

자! 이제 댕댕이는 공통 속성과 기능을 상속받았으니

이 댕댕이 만의 특별함을 추가하면 되는 것이다.

 

(상속받은 속성)이름은.... 시바...

(상속받은 속성)색깔은.... 식빵색

(상속받은 기능)시바는 먹고 싼다....

그리고 (댕댕이 클래스)추가 메서드(기능) 짖는다!

 

 

시바 완성!

 

이렇듯 객체지향에서의 상속이란 부모 클래스의 속성과 메서드를 자식 클래스가 물려받아

다시 똑같은 것을 만들 필요가 없어지고 그 자식 클래스만의 새로운 기능을 추가해서

확장을 쉽게 할 수 있게 해주는 것이다.

 

 

3. 다형성이란 무엇인가? 다형성이란 부모-자식과 같은 상속 관계에 있는

클래스에서 같은 이름의 메서드(기능)가 서로 다른 방식으로 동작할 수 있도록 하는 것이다.

 

예를 들어 동물이라는 부모 클래스에서 소리내다라는 메서드(기능)가 있다면

강아지라는 자식 클래스에서 소리내다의 부모의 메서드를 가지고와 수정하여

소리내다가 아닌 짖는다로 동작할 수 있게 만드는 것이다. 

 

마지막으로 추상화란 객체 간의 공통적인 특성들을 추출한 클래스로

그 특성들이 구현이 되지 않은 메소드들의 집합이다.

 

학생을 예시로 쉽게 설명한다면 학생이라는 클래스는

학생들이 공통으로 가지는 이름, 나이, 학년과 같은 속성을 가지고 있으며,

 

기능에는 학생들이 공부한다. 라고 정의해 둘뿐

어떻게 공부하는지 어떤 공부를 하는지는 기능에 작성하지 않는 것이다.

 

한마디로 추상적인 기능을 하는 것이다.

이러한 추상적인 클래스는

개념적이고, 구체적이지 않다.

반응형