객체란?
세상에 존재하는 식별 가능한 물체
객체의 구성
1. 속성 : 필드
객체 간의 상호작용
객체들은 메서드에 따라 데이터를 주고받는다.
객체 간의 관계
1. 사용 관계
객체 지향 프로그래밍의 특징
캡슐화
속성 + 행위를 하나로 묶어 개체로 생성, 이 후 실제 내부 구현 내용 외부에서 알 수 없게 감추는 것
외부 객체에서 캡슐화 객체 내부 구조 알 수 없기에 public된 필드나 메서드를 통해 접근 가능
필드와 메서드를 캡슐화하는 이유 = 외부 객체에서 해당 필드와 메서드를 잘못 이용해 객체가 변하지 않도록 하기 위해
Java에서는 접근제어자를 통해 필드와 메서드 노출 여부를 결정
상속
부모 객체가 가지고 있는 필드와 메서드를 자식 객체에게 물려주어 자식 객체가 이를 사용가능하도록 하는것
상속을 하는 이유
- 각각의 객체들을 상속 관계로 묶어 개체 간의 구조 파악이 쉬워짐
- 필드와 메서드를 변경시 부모 객체에 있는 것만 수정하면 자식 객체 전부 반영 -> 일관성 유지에 좋음
- 자식 객체가 부모 객체의 필드와 메서드 물려받아 사용가능 -> 코드의 중복 축소 및 코드 재사용성 증가한다.
다형성
객체가 연산 수행시 하나의 행위에 대해 각 객체가 가지고 있는 고유한 특성에 따라 다른 여러가지 형태로 재구성되는 것을 의미
객체를 생성할 때 구현하고자 하는 기능이 다르다면 메서드의 구현을 다르게 재정의하여 사용가능하다.
추상화
객체에서 공통된 부분을 모아 상위 개념으로 새롭게 선언하는 것
객체와 클래스
클래스란 객체를 생성하기 위한 설계도
클래스를 토대로 생성된 객체 = 인스턴스
인스턴스(객체)를 생성하는 과정 = 인스턴스화