객체지향 프로그래밍(OOP)란?

딩딩당당·2023년 2월 21일
0

JAVA로 프로그래밍 한다면 빼놓을 수 없는 것이 OOP이다. 객체지향프로그래밍의 특징은 캡슐화, 추상화, 다형성, 상속성 정도로 크게 나눌 수 있다.

1. 캡슐화 (Encapsulation)

첫번째로 캡슐화이다. 객체가 있으면 그 객체가 어떠한 목적을 위해 필요한 변수가 메소드를 하나로 묶는 것을 의미한다. 또한 캡슐화의 중요한 점은 은닉화 때문인데 어떠한 변수가 public으로 설정되어 있으면 누군가 접근하여 데이터가 변경될 우려가 있다. private로 변수를 보호해 간접적으로만 접근이 가능하도록 하는 것이 캡슐화의 중요성이다.

2. 추상화

추상화는 클래스들의 공통적인 요소를 하나의 클래스로 만들어내는 것이다. 공통적인 속성과 기능을 정의함으로써 코드의 중복을 줄이고, 유지/보수를 용이하게 하는 것이다.
추상화에는 추상 클래스, 추상 메서드가 있고 더 높은 추상화 정도를 가지고 있는 인터페이스가 있다.

3. 다형성

다형성은 상속을 통해 기능을 확장하거나 변경하는 것을 가능하게 해준다. 이를 통해 코드의 재사용성이 늘어나고 코드의 길이가 줄어들어 유지보수에 용이해진다. 다형성을 활용하는 대표적인 예시에는 오버라이딩(Overriding)오버로딩(Overloading)이다.

오버라이딩
오버라이딩은 부모에게 상속받아 용도에 맞게 재작성하여 사용할 수 있는 것이다.
오버로딩
오버로딩은 하나의 클래스 안에서 같은 이름의 메서드를 사용하지만 각 메서드마다 다른 용도로 사용되며 그 결과물도 다르게 구현할 수 있게 만드는 개념이다. 이름은 같고 매개변수의 갯수나 데이터 타입이 다른 경우 오버로딩이 적용된다.

4. 상속, 재사용성

상속이란 기존 상위클래스에 근거하여 클래스와 행위를 정의할 수 있게 도와주는 개념이다. 기존 클래스에 기능을 가져와 재사용할 수 있고 동시에 새로 만든 클래스에 새로운 기능을 추가할 수 있게 만들어 준다.
자바에서는 단일상속밖에 지원하지 않는다. 대비책으로 인터페이스를 다중상속 할 수 있게 해주었지만 인터페이스가 다중상속을 위해 존재한다고 생각하면 위험하다

profile
자바공부해요흑흑

0개의 댓글