728x90
1. 객체 지향 프로그래밍의 특징
📌 우리가 객체지향 프로그래밍을 하다보면 필연적으로 만나게 되는 개념이 있습니다.
- 바로 캡슐화, 상속, 다형성, 추상화입니다.
- 앞으로 학습하게 되는 내용에 포함되어 있기 때문에 간단하게 학습하고 가겠습니다.
1) 캡슐화
- 캡슐화란 속성(필드)와 행위(메서드)를 하나로 묶어 객체로 만든 후 실제 내부 구현 내용은 외부에서 알 수 없게 감추는 것을 의미한다.
- 외부 객체에서는 캡슐화된 객체의 내부 구조를 알 수 없기 때문에 노출시켜 준 필드 혹은 메서드를 통해 접근할 수 있다.
- 필드와 메서드를 캡슐화 하여 숨기는 이유는 외부 객체에서 해당 필드와 메서드를 잘못 사용하여 객체가 변화하지 않게 하는데 있다.
- Java에서는 캡슐화된 객체의 필드와 메서드를 노출 시킬지 감출 지 결정하기 위해 접근 제어자를 사용한다.
2) 상속
객체지향 프로그래밍에는 부모 객체와 자식 객체가 존재한다.
부모 객체는 가지고 있는 필드와 메서드를 자식 객체에 물려주어 자식 객체가 이를 사용할 수 있도록 만들 수 있습니다.
- 위 같은 행위를 상속이라고 할 수 있는데 상속을 하는 이유는 다음과 같습니다.
- 각각의 객체들을 상속 관계로 묶음으로써 객체 간의 구조를 파악하기 쉬워집니다.
- 필드와 메서드를 변경하는 경우 부모 객체에 있는 것만 수정하게 되면 자식 객체 전부 반영이 되기 때문에 일관성을 유지하기 좋습니다.
- 자식 객체가 부모 객체의 필드와 메서드를 물려받아 사용할 수 있기 때문에 코드의 중복이 줄어들며 코드의 재사용성이 증가됩니다.
3) 다형성
객체가 연산을 수행할 때 하나의 행위에 대해 각 객체가 가지고 있는 고유한 특성에 따라 다른 여러가지 형태로 재구성되는 것을 의미한다.
Car 클래스를 토대로 자동차 객체를 만들 때 A자동차 객체와 B자동차 객체의 경적 소리가 다르다면 ‘경적을 울리다’라는 행위 즉, horn(); 메서드의 구현을 다르게 재정의 하여 사용할 수 있습니다.
4) 추상화
객체에서 공통된 부분들을 모아 상위 개념으로 새롭게 선언하는 것을 추상화라고 합니다.
- 공통적이고 중요한 것들을 모아 객체를 모델링합니다.
- 현실세계의 여러 종류의 자동차들이 공통적으로 가지고 있는 가속, 브레이크, 속도와 같은 것들을 모아 자동차라는 객체를 모델링 할 수 있습니다.
2. 객체와 클래스
- 우리는 객체를 생성하기 위해서 설계도가 필요하다
- 현실세계에서는 자동차를 만들기 위해 자동차 설계도를 토대로 자동차를 생산합니다.
- 마찬가지로 소프트웨어에서도 객체를 만들기위해서는 설계도에 해당하는 클래스가 필요합니다.
- 이때 클래스를 토대로 생성된 객체를 해당 클래스의 ‘인스턴스’라고 부르며 이 과정을 ‘인스턴스화’라고 부릅니다.
- 동일한 클래스로 여러 개의 인스턴스를 만들 수 있습니다.
- 이때 객체와 인스턴스는 거의 비슷한 표현이지만 자세하게 구분해보자면 아래와 같습니다.
- 자동차 클래스를 통해 만들어진 하나의 자동차를 인스턴스라고 부르며 이러한 여러 개의 인스턴스들을 크게 통틀어서 자동차 객체라고 표현할 수 있습니다.
'JAVA' 카테고리의 다른 글
[JAVA] 객체 생성과 참조형 변수 (0) | 2023.05.29 |
---|---|
[JAVA] 클래스 설계 (0) | 2023.05.29 |
[JAVA] 객체지향 프로그래밍 이해하기 (1) (0) | 2023.05.29 |
[JAVA] JVM 구조와 메모리 영역 (0) | 2023.05.28 |
[JAVA] 참조형 배열로 정리하기 (컬렉션) (0) | 2023.05.27 |