정의
- 컴퓨터 프로그램을 여러개의 독립된 단위들의 모임으로 파악하고자 하는 것
요소
추상화
- 공통의 속성이나 기능을 묶어 이름을 붙임
- 클래스를 정의하는 것
캡슐화
- 변수와 함수를 하나의 단위(ex: class)로 묶는 것
상속
- 자식 클래스가 부모 클래스의 특성과 기능을 그대로 물려받는 것
- 캡슐화를 유지하는 상태로 클래스의 재사용이 가능하게 해줌
다형성
- 하나의 클래스나 메소드가 다양한 방식으로 동작이 가능한 것
- 오버라이딩
- 부모 클래스에서 상속받은 메서드를 재정의하는 것
- 메서드의 선언부는 부모의 것과 완전히 일치해야 함
- 오버로딩
- 한 클래스 내에서 같은 이름의 메서드를 여러개 정의하는 것
- 메서드의 이름이 같으면서, 매개변수의 개수 또는 타입이 달라야 함
- 리턴타입만 다르면 안됨
특징
장점
- 유지보수가 쉽고 재사용이 가능함
- 대형 프로젝트에 적합
단점