객체
객체란 물리적으로 존재하거나 개념적인 것 중에서 다른 것과 식별 가능한 것을 말한다.
객체는 속성과 동작으로 구성되는데, 자바는 각각 필드(field)와 메서드(method)라고 부른다.

현실 세계의 객체를 소프트웨어 객체로 설계하는 것을 객체 모델링이라고 한다.
객체의 상호작용
현실 세계에서 일어나는 모든 현상은 객체와 객체 간의 상호작용으로 이루어져 있다.
객체 지향 프로그램에서도 객체들은 다른 객체와 서로 상호작용하면서 동작한다.
객체들 사이의 상호작용 수단은 메서드이다. 객체가 다른 객체의 기능을 이용할 때 이 메서드를 호출한다.

객체 간의 관계
객체는 단독으로 존재할 수 있지만 대부분 다른 객체와 관계를 맺고 있다.

- 집합 관계 : 완성품과 부품의 관계
- 사용 관계 : 다른 객체의 필드를 읽고 변경하거나 메서드를 호출하는 관계
- 상속 관계 : 부모와 자식 관계
객체 지향 프로그래밍 특징
캡슐화
객체의 데이터(필드), 동작(메서드)을 하나로 묶고 실제 구현 내용을 외부에 감추는 것을 말한다.
외부 객체는 객체 내부의 구조를 알지 못하며 객체가 노출해서 제공하는 필드와 메서드만 이용할 수 있다.

외부의 잘못된 사용으로 인해 객체가 손상되지 않기 위해 캡슐화한다.
자바 언어는 캡슐화된 멤버를 노출시킬 것인지 숨길 것인지를 접근 제한자를 사용해 결정한다.
상속
객체 지향 프로그래밍에서는 부모 역할의 상위 객체와 자식 역할의 하위 객체가 있다.
부모 객체가 가지고 있는 필드와 메서드를 자식 객체가 사용할 수 있도록 하는 것이 상속이다.

코드의 재사용성을 높여주고, 유지 보수 시간을 최소화시켜주는 장점이 있다.
다형성
사용 방법은 동일하지만 실행 결과가 다양하게 나오는 성질을 말한다.
다형성을 구현하기 위해서는 자동 타입 변환과 재정의 기술이 필요하다. 이 기술들은 상속과 인터페이스 구현을 통해 얻어진다.

클래스
객체를 생성할 때에는 설계도가 필요하다. 그에 해당하는 것이 바로 클래스이다.
클래스로부터 생성된 객체를 해당 클래스의 인스턴스라고 부른다. 그리고 클래스로부터 객체를 만드는 과정을 인스턴스화라고 한다.
동일한 클래스로부터 여러 개의 인스턴스를 만들 수 있다.
클래스 선언
객체 생성을 위한 설계도를 작성하는 작업이다.
어떻게 객체를 생성(생성자)하고, 객체가 가져야 할 데이터(필드)가 무엇이고, 객체의 동작(메서드)은 무엇인지를 정의하는 내용이 포함된다.
//클래스 선언
public class 클래스명 {
}
객체 생성과 클래스 변수
클래스로부터 객체를 생성하려면 객체 생성 연산자인 new가 필요하다.
new 연산자 뒤에는 생성자 호출 코드가 오는데, 클래스() 형태를 가진다.
new 연산자는 객체를 생성시킨 후 객체의 주소를 리턴하기 때문에 클래스 변수에 다음과 같이 대입할 수 있다.
클래스 변수 = new 클래스();
클래스의 구성 멤버
클래스 선언에는 객체 초기화 역할을 담당하는 생성자와 객체에 포함될 필드와 메서드를 선언하는 코드가 포함된다.
public class ClassName {
//필드 선언
int fieldName;
//생성자 선언
ClassName() {...}
//메서드 선언
int methodName() {...}
}
- 필드 : 객체의 데이터를 저장하는 역할, 선언 형태는 변수 선언과 비슷하지만 쓰임새는 다름
- 생성자 : new 연산자로 객체를 생성할 때 객체의 초기화 역할, 선언 형태는 메서드와 비슷하지만 리턴 타입이 없고 이름은 클래스 이름과 동일
- 메서드 : 객체가 수행할 동작, 객체와 객체간의 상호작용을 위해 호출
출처
'Study > Java' 카테고리의 다른 글
| [Java] 인터페이스 선언 및 구성 멤버 (0) | 2024.05.25 |
|---|---|
| [Java] 상속 (0) | 2024.05.09 |
| [Java] 컴파일 과정 (0) | 2024.04.29 |
| [Java] 람다, 스트림, Optional (0) | 2024.04.22 |
| [Java] 객체 지향 설계 5가지 원칙 - SOLID (2) | 2024.04.15 |