1. 객체(Object)
객체는 세상에 존재하는 물체를 뜻하며 식별이 가능한 것을 의미합니다.
객체는 속성과 행위로 구성되어 있으며, Java에서는 속성과 행위를 필드와 메서드로 정의하여 구현할 수 있습니다. 현실 세계에 있는 객체를 소프트웨어의 객체로 설계하는 것을 '객체 모델링'이라고 합니다.
2. 객체 간 상호작용
행위를 정의하는 Java의 메서드를 통해 객체 간 상호작용이 이루어집니다.
또한 소프트웨어의 객체들은 메서드를 통해 데이터를 주고받습니다.

예를 들어
1) Person 객체는 Car 객체가 가지고 있는 gasPedal() 이라는 메서드를 호출합니다.
2) gasPedal(50); 와 같이 메서드 괄호 안에 50의 매개값을 넣어 호출하면, Car 객체는 해당하는 50의 데이터를 전달 받아 Car 객체의 속성인 속도의 값을 50으로 변경합니다.
3. 객체지향 프로그래밍의 특징
1) 캡슐화(Encapsulation)
- 캡슐화란 속성(필드)와 행위(메서드)를 하나로 묶어 객체로 만든 후 실제 내부 구현 내용은 외부에서 알 수 없게 감추는 것을 의미합니다.
- 외부 객체에서는 캡슐화된 객체의 내부 구조를 알 수 없기 때문에 노출시켜 준 필드 혹은 메서드를 통해 접근할 수 있습니다.
- 필드와 메서드를 캡슐화 하여 숨기는 이유는 외부 객체에서 해당 필드와 메서드를 잘못 사용하여 객체가 변화하지 않게 하는 데 있습니다.
- Java에서는 캡슐화된 객체의 필드와 메서드를 노출 시킬지 감출 지 결정하기 위해 접근 제어자를 사용합니다.
2) 상속(Inheritance)
- 객체지향 프로그래밍에는 부모 객체와 자식 객체가 존재하며, 부모 객체는 가지고 있는 필드와 메서드를 자식 객체에 물려주어 자식 객체가 이를 사용할 수 있도록 만들 수 있습니다.
- 각각의 객체들을 상속 관계로 묶음으로써 객체 간의 구조를 파악하기 쉬워집니다.
- 필드와 메서드를 변경하는 경우 부모 객체에 있는 것만 수정하게 되면 자식 객체 전부 반영이 되기 때문에 일관성을 유지하기 좋습니다.
- 자식 객체가 부모 객체의 필드와 메서드를 물려받아 사용할 수 있기 때문에 코드의 중복이 줄어들며 코드의 재사용 성이 증가됩니다.
3) 다형성(Polymorphism)
- 다형성객체가 연산을 수행할 때 하나의 행위에 대해 각 객체가 가지고 있는 고유한 특성에 따라 다른 여러 가지 형태로 재구성되는 것을 의미합니다. -> 코드의 유연성과 재사용성을 높이는데 도움을 줍니다.
- 다형성은 오버로딩(Overloading)과 오버라이딩(Overriding)을 통해 구현되며, 코드의 유연성을 높여주고 다양한 객체를 일관된 방식으로 다룰 수 있게 합니다.
4) 추상화(Abstraction)
- 객체에서 공통된 부분들을 모아 상위 개념으로 새롭게 선언하는 것을 추상화라고 합니다.
- 또한 공통적이고 중요한 것들을 모아 객체를 모델링합니다.
- 현실세계의 여러 종류의 자동차들이 공통적으로 가지고 있는 가속, 브레이크, 속도와 같은 것들을 모아 자동차라는 객체를 모델링 할 수 있습니다.
'Java' 카테고리의 다른 글
| 상속 (Inheritance) (0) | 2024.01.09 |
|---|---|
| 접근 제어자 (Access Modifier), Getter, Setter (0) | 2024.01.08 |
| List (0) | 2024.01.05 |
| 메서드(method) (0) | 2024.01.04 |
| 자료구조(Data Structure) - Java (1) | 2024.01.02 |