■ 개발 정리/기본개념

객체지향 프로그래밍(Object Oriented Programming) 네가지 주요특징

파코키 2017. 8. 19. 09:39





객체지향 프로그래밍(Object Oriented Programming)

네가지 주요특징


1) 상속(Inheritance)

상위클래스(Parent, Super, Base)

하위클래스(Child, Sub, Derived)


상위클래스의 특징을 하위클래스가 모두 물려받는 것

하위클래스는 상위클래스가 가지고 있는 맴버변수와 메소드를 모두 물려받아 사용할 수 있다.

이 관계를 상속관계에 있다. 계층구조가 형성되어있다. 라고 한다.


상속에 의해 오버로딩, 오버라이딩, this등의 다양한 문법들이 생겼다.


2) 캡슐화(Encapsulation)

실제 기능은 숨기고, 접근할 방법만 노출하는 것을 말한다.

캡슐화로 알 필요가 없는 정보를 숨겨 프로그램의 복잡도를 제어할 수 있는데,

이러한 기능을 은닉성(Hidden)이라고 한다.


자바에서는 캡슐화를 위해 네가지의 접근제한자를 제공한다.

private - 외부 객체에서 접근 불가

default - 같은 패키지의 객체만 접근 가능

protected - 상속관계의 객체만 접근가능 일반객체는 접근 불가

public - 모든 객체에서 접근가능


3) 추상화(Abstraction)

객체의 공통적인 특징을 뽑아내는 과정


추상화 과정

- 객체들의 공통적인 개념 추출

- 추출한 개념을 이용하여 최소한의 기능을 가진 상위 개념의 객체를 만든다.

- 나머지 객체는 상위개념의 객체를 상속받아 구현하는 형태로 변경


추상화는 다향성을 구현하기 위한 기법으로 활용된다.


4) 다형성(Polymorphism)

객체가 여러가지 형태를 가질 수 있다는 뜻이다.

상속관계의 경우 부모는 모든 자식을 포함하는 큰 개념이므로 상위 클래스 타입의 변수로 하위 클래스 타입의 모든 객체를 참조할 수 있다.


다형성을 이용해 코드를 작성하면, 새로운 하위 클래스를 추가하더라도 기존의 코드를 변경할 필요가 없다.