그런데,
객체(Object)란 물리적으로 존재하거나 추상적으로 생각할 수 있는 것들 중에 자신의 상태(state)와 행동(behavior)을 갖고있는 것이다.
우리 주변에는 이런 객체들이 아주 많이 존재하는데 예를 들면, 우리집에는 고양이 세마리와 강아지 한마리가 있다.
하지만 공식문서를 참고하여 자전거로 예를 들어보겠다.
자전거는 이런 상태를 가진다.
그리고 고양이는 이런 행동을 한다.
이렇게 현실세계에서 OOP의 개념을 적용하는 것이 학습에 좋은 출발이 될 수 있다.
잠시 시간을 내어 가까이 있는 객체를 관찰해보면 질문 두개가 생긴다.
"이 객체에 어떤 상태가 가능할까?"
"이 객체가 어떤 행동을 할 수 있을까?"
소프트웨어 객체도 현실세계와 비슷한 컨셉을 가진다. 상태와 행동으로 이루어져있다.
객체는 필드에 상태를 저장하고, 메서드를 통해 동작한다. 메서드는 객체 내부에서 동작하면서 객체 간 소통을 위한 메커니즘을 제공한다. 내부 상태는 객체 안에 숨기고, 메서드를 통해 외부와 상호작용을 하도록 요구하는것이 객체 지향 프로그래밍의 기본 원칙 중 하나인 캡슐화(encapsulation)다.
이렇게 코드를 객체로 묶으면 다음과 같은 장점이 있다.
출처
https://docs.oracle.com/javase/tutorial/java/concepts/object.html