반응형
객체지향(OOP) 언어의 4가지 특징
- 추상화 (Abstraction)
- 캡슐화 (Encapsulation)
- 상속 (Inheritance)
- 다형성 (Polymorphism)
추상화 (Abstraction)
- 현실 세계의 사실에서 주어진 문제의 중요한 측면을 주목하여 설명하는 방식
- 실세계의 객체에서 불필요한 부분을 제거하여, 필요한 부분만을 간결하고 이해하기 쉬운 클래스로 만드는 작업
- 속성과 행동으로 추상화를 실형
캡슐화 (Encapsulation)
캡슐화
- 객체와 객체 간의 의사소통을 위한 정보만을 노출하여 실제 내부의 구현 정보는 숨기는 윈리
- 추상화 과정에서 클래스를 정의할 때, 객체의 자료와 행위를 클래스 단위로 하나로 묶고, 실제 내부 구현 내용을 외부에 감추는 것
정보 은닉(information hiding)이 발생
- 캡슐화 과정에서 클래스 내부 구현을 외부에 숨김
- 내부에서 일어나는 일은 관심 없음
클래스의 단위의 내부 기능 중 일부는 외부에 공개되어, 다른 객체와 메시지 전달과 수신을 하며 외부와의 통로 역할 수행
상속 (Inheritance)
- '물려받는다'라는 특징을 상속
- 객체지향의 가장 핵심이 되는 개념
- 프로그램을 쉽게 확장할 수 있도록 해주는 강력한 수단
- 상위 클래스와 하위 클래스 간의 관계 (계층도)
- 상속의 장점 : 공통의 특성을 하위 클래스마다 반복적으로 기술하지 않고, 한 번만 기술하기 때문에 중복을 줄여 재사용성 증대
다형성 (Polymorphism)
- 원래 생물학적 용어로 여러(poly) 형태(morphy)를 의미
- 외부에 보이는 모습은 한 가지 형태이지만 실질적으로 쓰이는 기능은 여러 가지 역할을 수행한다는 의미
- 다형성의 예 : 오버 로딩(overloading), 오버 라이딩(overriding)
반응형
'cs > java-spring-boot' 카테고리의 다른 글
[Zero-base] 2-4. 생성자 (0) | 2022.01.18 |
---|---|
[Zero-base] 2-3. 클래스와 객체의 생성 (0) | 2022.01.18 |
[Zero-base] 2-1. 객체지향 프로그래밍의 이해 (0) | 2022.01.18 |
[Zero-base] 1주차 과제 - 3번 과제 (AlphabetFinder.java) (0) | 2022.01.16 |
[Zero-base] 1주차 과제 - 2번 과제 (ClassManagement.java) (0) | 2022.01.14 |