Obejcet-Oriented-Programming(객체 지향 프로그래밍)이 뭔가요?
데이터와 기능을 '객체' 라는 추상적 개념으로 묶어 프로그램을 설계하는 이론입니다.
재사용, 캡슐화, 추상화, 상속, 다형성 이 있습니다.
재사용성은 코드를 객체를 처음생성할때, 한번만 작성하고 이후에는 객체의 기능을 호출하여 코드의 재사용성을 높이는 개념입니다. 이틀 통해 반복적인 작업을 줄여 개발의 효율성을 높일 수 있습니다.
캡슐화는 객체 세부 구현 내용을 접근 제어자(public, private,protected)로 숨기거나 드러나게 할 수 있습니다. 그래서 객체 내부 데이터를 외부에서 임의로 변경하거나 접근하는 것을 방지하여 안정성을 높입니다.
추상화는 복잡한 구조 혹은 데이터로부터 핵심적인 기능을 간추려서 사용자에게 필요한 인터페이스만을 제공하는 개념입니다. 이를 통해 코드 유지 관리를 유용하게 합니다.
상속은 기존 객체의 속성과 메서드를 새로운 객체에게 물려주는 개념입니다. 상속을 통해 객체의 계층적인 분류 또한 가능하며, 공통적인 속성은 사용하고 동시에 각 객체에 대한 세부 속성을 추가할 수도 있습니다.
다형성은 같은 메서드 이름이지만 서로 다른 동작을 수행하는 개념입니다. 오버로딩과 오버라이딩이라는 개념으로 나뉘는데, 오버로딩의 경우는 같은 메서드 이름이지만, 매개변수 혹은 타입이 다르게 정의되어 다른 기능을 하는 것입니다.
오버라이딩의 경우는 기존 객체 클래스의 메서드를 하위 자식 클래스에서 재정의를 하는 것입니다. 오버라이딩으로 하위 객체는 기존 각체의 대부분의 기능을 물려받지만, 오버라이딩된 메서드는 기존 객체와 다른 독자적인 기능을 추가할 수 있습니다.