객체 지향 프로그래밍(Object - Oriented Programming, OOP)
: 프로그래밍에서 필요한 데이터를 추상화시켜, 상태와 행위를 가진 객체로 만들고, 객체들의 유기적인 결합과 협력으로 파악하고자 하는 컴퓨터 프로그래밍의 패러다임
- 장점)
- 프로그램을 유연하고 변경이 용이하게 만들 수 있음
- 인간 친화적이고 직관적인 코드 작성에 용이
객체
: 객체 지향 프로그래밍의 가장 기본적인 단위이자 시작점
- 객체를 추상화시켜 속성과 기능으로 분류하여 각각 변수와 함수로 정의
- 4가지 특성을 가짐
1. 추상화(Abstraction)
: 객체의 공통적인 속성과 기능을 추출하여 정의하는 것
- 중요한 부분을 강조하기 위해 불필요한 사항들을 제거하고 공통적인 부분만을 추출하여 간단하게 표현
cf)인터페이스
: 특정 객체의 역할만을 정의하여 객체들 간 관계를 유연하게 연결하는 역할을 담당
- 역할과 구현의 분리
2. 상속(Inheritance)
: 기존의 클래스를 재활용하여 새로운 클래스를 작성하는 자바 문법 요소
- extends 키워드를 통해 상위 클래스의 기능들을 하위 클래스로 확장하여 반복적인 코드를 제거
- 코드 변경이 있을시, 상위 클래스의 코드만을 변경하면 이를 상혹하는 하위 클래스들도 변경 사항이 반영됨
- 오버라이딩 : 메소드 내용을 재정의
인터페이스 vs 상속
- 공통점)
-> 상위 - 하위 클래스 관계를 전제하여 공통 속성 및 기능을 공유
- 차이점)
▶ 상속 (extends)
-> 오버라이딩을 사용하여 메서드를 재정의
▶ 인터페이스 (implements)
-> 인터페이스 내 정의된 추상 메서드 내용이 하위 클래스에서 정의되어야 함
=> 상속 관계가 인터페이스를 사용한 구현에 비해 추상화 정도가 낮음
3. 다형성(Polymorphism)
: 어떤 객체의 속성이나 기능이 상황에 따라 여러 가지 형태를 가질 수 있는 성징
- 메서드 오버로딩 또한 하나의 클래스 내에서 같은 이름의 메서드를 여러 개 중복하여 정의한다는 점에서 같은 맥락
- 한 타입의 참조 변수를 통하여 여러 타입의 객체를 참조할 수 있도록 만든 것을 의미
- 자바에서의 배열은 하나의 같은 타입으로만 이루어져 있는 자료구조인데, 다형성을 활용하면 하나의 타입만으로 여러 가지 타입의 객체를 참조할 수 있음
-> 보다 간편하고 유연하게 코드를 작성할 수 있음
cf) 의존한다
: 하나의 객체가 다른 객체의 속성 및 기능에 접근하여 어떤 기능을 사용할 때
-> 객체 간 결합도가 높다
-> 객체들 사이 결합도가 높으면 전달받는 매개변수가 변경되는 경우와 같이 메서드 내 매개변수의 참조변수 타입과 참조변수 타입과 참조 변수를 수정할 수 밖에 없는 예가 발생
4. 캡슐화(Encapsulation)
: 클래스 안에 서로 연관있는 속성과 기능들을 하나의 캡슐로 만들어 외부로부터 보호하는 것을 의미
- 캡슐화 하는 이유)
- 데이터 보호 : 외부로부터 클래스에 정의된 속성과 기능들을 보호
- 데이터 은닉 : 내부의 동작을 감추고 외부에는 필요한 부분만 노출
'JAVA' 카테고리의 다른 글
6. Xms & Xmx (0) | 2025.03.28 |
---|---|
5. JRE, JDK, JVM (0) | 2025.03.21 |
4. 다양한 GC (0) | 2025.03.21 |
3. JVM 메모리 구조 (0) | 2025.03.14 |
1. Gradle (1) | 2025.03.14 |