객체의 관점에서의 프로그래밍 패러다임이다.
객체들의 유기적인 관계를 통해서 프로세스가 진행된다.
현실 세계를 프로그램 설계에 반영한다는 개념을 기반으로 접근하는 프로그래밍 패러다임 중 하나이다.
가장 큰 목적은 코드의 재사용과 중복제거다.
특징
캡슐화(Encapsulation)
캡슐화는 하나의 객체에 대해 그 객체가 특정한 목적을 위한 필요한 변수나 메소드를 하나로 묶는 것을 의미한다.
캡슐화는 어떠한 클래스를 사용할 때 내부 동작이 어떻게 돌아가는지 모르더라도 사용법만 알면 쓸 수 있도록 클래스 내부를 감추는 기법이다.
캡슐화를 하면 불필요한 정보를 감출 수 있기 때문에 정보은닉을 할 수 있다는 특징이 있다.
데이터와 기능이 클래스로 캡슐화된 컴퓨터 자원의 묶음을 객체라고 한다.
추상화(Abstraction)
공통의 속성이나 기능을 묶는 것이다.
추상화의 목적은 복잡한 시스템의 의미들을 계층화하여 분리해서 관리하기 쉽도록 하는 것이다.
다형성(Polimorphism)
부모 클래스에서 물려받은 기능을 자식클래스에서 확장하거나 변경할 수 있어 형태는 같지만 다른 기능을 할 수 있는 특징이다.
다형성은 상속을 통해 기능을 확장하거나 변경하는 것을 가능하게 해준다.
상속을 통해 같은 기능을 하지만 용도나 목적에 따라 다른 결과물을 내는것이다.
정적 다형성(overloading)
동적 다형성(overriding)
상속성,재사용(Inheritance)
상위 개념의 특징을 하위 개념이 물려받는 것이다.
부모 클래스에서 기능을 가져와 재사용할 수도 있고 그렇게 만들어진 자식클래스에 새로운 기능을 추가할 수 있다.(확장)