OOP(Object-Oriented Programming)란
객체 지향적인 프로그래밍이라는 뜻으로, '객체의 관점에서 프로그래밍 한다'는 의미다.
Java는 객체 지향의 특징을 가진 언어이며, 이러한 언어는 4가지 특징을 지닌다.
추상화(Abstraction)/ 캡슐화(Encapsulation)/ 상속성(Inheritance)/ 다형성(Polymorphism)
1) 추상화(Abstraction)
- 목적과 관련이 없는 부분을 제거하여 필요한 부분만을 표현하기 위한 개념이다.
- 객체들의 공통 특징을 뽑아 클래스로 구현하고 직접 구현 전에 설계도를 만들어 시스템의 구조를 확인할 수 있다.
- 객체들은 실제 그 모습이지만, 클래스는 객체들이 어떤 특징들이 있어야 한다고 정의하는 추상화된 개념으로, '객체들의 공통된 특징을 파악해 정의해 놓은 설계 기법'이라고 이해할 수 있다.
2) 캡슐화(Encapsulation)
- 하나의 객체에 대해 그 객체가 특정한 목적을 위한 필요한 변수나 메소드를 하나로 묶는 것을 의미한다. '은닉화'라고도 한다.
- 외부의 잘못된 접근이 있을 때 객체의 데이터, 메소드에 유효하지 않은 값이 들어가 오류가 나는 것을 방지한다.
- 접근 제한자를 둬 정보의 공개 범위를 설정한다.
- 캡슐화된 객체는 재사용 가능하다.
3) 상속성(Inheritance)
- 부모 클래스를 자식 클래스가 상속받는 것을 의미한다.
- 코드를 재사용해 효율적인 코딩을 할 수 있으며, 추후 유지 및 보수에 용이하다.
4) 다형성(Polymorphism)
- 상속을 통해 기능을 확장하거나 변경하는 것을 가능하게 해준다.
- 형태가 같은데 다른 기능을 하는 것을 의미한다 (같은 동작이지만 다른 결과물이 나올때 다형이라고 생각하면 된다.)
- 이를 통해 코드의 재사용, 코드 길이 감소가 되어 유지보수가 용이하도록 도와준다.
- '울음'이라는 같은 속성을 물려받은 고양이, 사자가 있다고 했을 때 그 둘이 내는 울음소리는 다르다. (같은 동작-> 다른 결과물: 다형성)
- 속성을 활용하기 위한 인터페이스는 유지하고 메서드 이름을 낭비하지 않아 경제적이다.
'BackEnd > Java' 카테고리의 다른 글
컬렉션 Collection (0) | 2021.09.24 |
---|---|
인터페이스 Interface (0) | 2021.09.22 |
상속 Inheritance (0) | 2021.09.22 |
클래스 구성요소 (0) | 2021.09.22 |