캡슐화, 상속, 추상화, 다형성 공부하기 (FEAT. 오버로딩, 오버라이딩)

홍당무·2023년 2월 28일
0

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

특징

1. 캡슐화(Encapsulation)

- 데이터와 함수를 하나로 묶는 것

- 데이터의 세부 내용이 객체 은닉된다. 즉, 데이터 변경으로 인한 에러가 줄어들고, 객체들간에 데이터를 자세히 알 필요가 없으므로 코드가 단순해진다.

- 객체와 함수의 재사용이 쉽다.

2. 추상화 (Abstraction)

- 불필요한 부분은 생략하고 중요한 것에만 초점을 맞춰 모델로 만든다.

- 복잡한 모델을 중요한 것 만 추려 추상화 함으로써 시스템 구조를 시각적으로 표현할 수 있다.

- 완전한 시스템이 구축되지 않더라도 개략적으로 모델을 만들어 테스트 하고 살을 붙여나갈 수 있다.

3. 상속성 (Inheritance)

- 부모클래스에 정의된 모든 것을 자식 클래스가 물려받는다.

- 재정의 할 필요가 없어 코드 작성이 간결해진다.

- 상속으로 인한 최소한의 규칙을 통해 프로젝트의 확장 시 오류를 최소화 한다.

- 자식클래스에서 새로운 함수를 추가하거나 부모 클래스의 함수를 재정의(Overriding)해 사용할 수 있다.

- 클래스의 재사용이 쉽다.

4. 다형성 (Polymorphism)

- 호출하는 객체에 따라 다른 동작을 한다.

- 하나의 클래스에서 같은 이름의 함수를 여러 개 가질 수 있다(Overloading). 호출하는 객체가 어떤 인풋 파라미터를 사용해 호출하냐에 따라 각자 다른 함수가 호출되게 한다. 즉, 비슷한 기능을 하는 다른 함수를 만들 때 불필요하게 너무 많은 함수명을 만들어 내 가독성이 떨어지는 문제를 해결할 수 있다.

+bonus 정보은닉 (Information Hiding)

- private으로 선언한 데이터는 자기 자신을 통해서만(setter, getter) 접근 가능하다.

- 각 객체간의 수정이 다른 객체에 미치는 영향을 최소화 한다.

- 외부 객체의 직접 접근을 막아 프로젝트 확장 시 오류를 최소화 한다.

오버로딩 vs 오버라이딩

정의

- 오버로딩은 서로 다른 시그니처를 갖는 여러 메소드를 하나의 이름으로 정의하는 것

- 오버라이딩은 상속 관계에 있는 부모 클래스에서 이미 정의된 메소드를 자식 클래스에서 같은 시그니쳐를 갖는 메소드로 다시 정의하는 것

간단히 정의하면 오버로딩(overloading)은 새로운 메소드를 정의하는 것. 하지만 오버라이딩(overriding)은 상속받은 기존의 메소드를 재정의하는 것

메소드 오버라이딩

  • 자바에서는 메소드 오버라이딩을 통해 상속받은 부모 클래스의 메소드를 자식 클래스에서 직접 재정의할 수 있다.
profile
공부하는 백엔드 개발자

0개의 댓글

관련 채용 정보