JAVA

2. 객체지향

ggomjiu 2025. 3. 14. 14:25

객체 지향 프로그래밍(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