객체(Object)란?

물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고 다른것과 식별 가능한 것을 말합니다.

객체는 속성과 동작으로 구성되어 있다고 보면되는데 자바에서는 이 속성과 동작을 각각 필드(field)와 메소드(method)라 부릅니다.

현실 세계의 객체를 소프트웨어 객체로 설계하는 것을 객체 모델링(Object Modeling)이라고 합니다. 객체 모델링은 현실 객체의 속성과 동작을 추려내서 소프트웨어 객체의 필드와 메소드로 정의하는 과정이라 할 수 있습니다.

객체지향프로그래밍의 특징

캡슐화(Encapsulation)
캡슐화란 객체의 필드, 메소드를 하나로 묶고, 실제 구현 내용을 감추는 것을 말합니다.
외부 객체는 객체 내부의 구조를 알지 못하며, 객체가 노출해서 제공하는 필드와 메소드만 이용할 수 있습니다

이렇게 캡슐화를 하는 이유는 외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 하기 위함입니다.

자바 언어는 캡슐화된 멤버를 노출시킬지, 숨길 것인지를 결정하기 위해 접근제한자를 사용합니다.

접근제한자는 객체의 필드와 메소드의 사용 범위를 제한함으로써 외부로부터 보호합니다.

상속(Inheritance)
상속이란 객체 지향 프로그래밍에서 부모 역할의 상위 객체가 자기가 가지고 있는 필드와 메소드를 자식 역할의 하위 객체에게 물려주어 하위 객체가 사용할 수 있도록 해주는 것 입니다.
상속은 상위 객체를 재사용함으로써 하위 객체를 쉽고 빨리 설계할 수 있도록 도와주고, 이미 잘 개발된 객체를 재사용해서 새로운 객체를 만들기 때문에 반복된 코드의 중복을 줄여줍니다.
다형성(Polymorphsim)
다형성은 같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질을 말합니다. 코드 측면에서 보면 다형성은 하나의 타입에 여러 객체를 대입함으로써 다양한 기능을 이용할 수 있게 해줍니다.
복사했습니다!