객체지향 프로그래밍 (OOP)
객체지향 프로그래밍(OOP, Object-Oriented Programming)은 객체들의 집합으로 프로그램의 상호 작용을 표현하며 데이터를 객체로 취급하여 객체 내부에 선언된 메서드를 활용하는 방식이다.
객체지향 프로그래밍은 추상화, 캡슐화, 상속성, 다형성이라는 특징이 있다.
● 추상화
추상화(Abstraction)란 복잡한 시스템으로부터 핵심적인 개념 또는 기능을 간추려내는 것을 의미한다.
예를 들어 대학교 후임 태건에게는 특전사, 키180, 여친있음, 짧은머리, 노래잘함 등의 특징이 있다. 이러한 특징 중에서 코드로 나타낼 때 일부분의 특징인 특전사, 노래잘함만 뽑아내거나 조금 더 간추려서 나타내는 것을 말한다.
● 캡슐화
캡슐화(Encapsulartion)는 객체의 속성과 메서드를 하나로 묶고 일부를 외부에 감추어 은닉하는 것을 말한다.
● 상속성
상속성(Inheritance)는 상위 클래스의 특성을 하위 클래스가 이어받아서 재사용하거나 추가, 확장하는 것을 말한다. 코드의 재사용 측면, 계층적인 관계 생성, 유지 보수성 측면에서 중요하다.
● 다형성
다형성(Polymorphism)은 하나의 메서드나 클래스가 다양한 방법으로 동작하는 것을 말한다. 대표적으로 오버로딩, 오버라이딩이 있다.
오버로딩
오버로딩은 같은 이름을 가진 메서드를 여러 개 두는 것을 말한다. 메서드의 타입, 매개변수의 유형, 개수 등으로 여러 개 둘 수 있으며 컴파일 중에 발생하는 '정적' 다형성이다.
<출력 결과>
I love Gun
I love Army and Apple
오버라이딩
오버라이딩은 주로 메서드 오버라이딩을 말하며 상위 클래스로부터 상속받은 메서드를 하위 클래스가 재정의하는 것을 의미한다. 이는 런타임 중에 발생하는 '동적'다형성이다.
<출력 결과>
wal!!! wal!!!
앞의 코드를 보면 부모 클래스는 mumu! mumu!로 짖게 만들었지만 자식 클래스에서 wal!!! wal!!!로 짖게 만들었떠니 자식 클래스 기반으로 메서드가 재정의됨을 알 수 있다.
다음 글에는 SOLID 원칙에 대해 알아보겠다.(●'◡'●)