정리용/java

[JAVA] 기초 1. 객체지향 프로그래밍의 핵심 개념 4가지

hee-ya07 2025. 1. 23. 14:54

0. 객체 지향 프로그래밍(OOP)의 핵심 개념

0.1. 캡슐화 (Encapsulation)

:: 객체의 상태(=데이터)와 그 상태를 변경하는 메서드를 하나로 묶는 원칙

:: 정보 은닉 + 접근 제어를 통한 객체의 상태 보호 + 데이터 무결성을 제공

더보기

- 접근 제어자를 통해 데이터를 은닉
- 외부에는 최소한의 메서드만을 노출하여 데이터의 변경 및 접근을 제한
==> 단순히 숨기는 것이 아닌 "독립된 시스템 구축"에 있다

  • 접근 제어자를 통해 구현

출처 : ASAC 수업자료

- public : 어디서도 접근

- protected : private + default의 접근성(상속 or 같은 패키지 내)

- default : 같은 패키지 내 접근 가능

- private : 동일한 클래스 내에서만 접근 가능, inner 클래스의 경우, 상위에서 접근 가능 


0.2. 상속 (Inheritance)

:: 기존 클래스를 기반으로 새로운 클래스를 생성하는 기능

:: 기존 클래스의 속성(필드)과 메서드를 자식 클래스가 내려 받음

:: 코드의 재사용성 + 확장성 + 유지 보수성 향상 + 계층적 구조를 통한 다형성(Polymorphism) 구현

더보기

- 기존 클래스의 속성과 메서드를 재사용 + 확장하여 새로운 클래스 정의 가능

- 유사한 내용의 코드 중복을 줄이고 계층적인 관계를 형성

  • 단점
    1) 갖고 싶지 않은 필드와 메서드까지 상속 받음
    2) 사용하지 않은 필드와 메서드까지 호출될 수 있음
    • 상속 보다 조합을 활용하여 이를 해결
      => 상속의 경우 기존의 캡슐화를 그대로 유지
      => 조합의 경우 기존의 캡슐화 위에 또 캡슐화

0.3. 추상화 (Abstraction)

:: 객체의 복잡한 내부는 은닉, 중요 기능만 노출(캡슐화와 같은..)

:: 정보 은닉 + 일관성 있는 인터페이스 제공 + 클래스 간의 결합도 감소

더보기

- 복잡한 구현은 숨기고, 핵심적인 기능만 외부에 제공
- 사용자는 복잡함을 알필요 없이 인터페이스만으로 객체와 상호작용 가능

- 내부의 동작 방식은 언제든지 바뀌어도 반환이 같다면 괜찮

구현 방법 내용
1) 추상 클래스(abstract class) - 일부 메서드 구현
- 일부 메서드는 자식에서 구현을 강제
2) 인터페이스(interface) - 모든 메서드가 충상적
- 구현 클래스에서 구현

* 구현 클래스 = concreate class


0.4. 다형성 (Polymorphism)

:: 하나의 객체가 여러 형태를 가질 수 있는 능력

:: 메서드 오버로딩과 메서드 오버라이딩으로 구현

:: 동일한 하나의 인터페이스로 다양한 구현체에 대응이 가능
:: 코드의 유연성 + 확장 가능

구현 방법 내용
1) 메서드 오버라이딩
(Overriding)
- 자식 클래스에서 부모 클래스의 메서드를 재정의
- 동작을 변경하는 것.
2) 메서드 오버로딩
(Overloading)
- 동일한 메서드 이름을 사용
- 파라미터의 타입이나 개수가 달라지도록 메서드를 정의
3) 동적 바인딩
(Dynamic Binding)
- 객체의 실제 타입에 따라 메서드가 결정되는 특성
- 실행 시간에 결정

 


* 깨알 사전

  •  분업화(모듈화)
    :: 모듈의 기반이 되는 클래스와 객체가 있을 때,
    => 한 객체는 하나의 일만 수행한다.

참고

ASAC 수업자료