공부/기본 개념 공부

Overriding과 Overloading 차이점

냥냥냥냥냥냥 2022. 3. 4. 20:51

Overriding은 부모 클래스에서 사용되고 있는 메서드를 자식 클래스에서 재사용하는 방법을 일컫는다 (상속의 개념)

 

Class Animal {
   void say() {
 }
}

Class Dog extends Animal {
   @Override
   void say() {
    bark();
 }
}

Class Human extends Animal {
   @Override
   void say() {
    talk();
 }
}

표 1. Overriding 예시

 

위의 예시와 같이 동물이라는 부모 안에는 사람, 개, 고양이 등 다양한 자식이 존재 할 수 있다

이 때 부모에서 사용과 달리 각 자식에서 override 하여 필요에 맞게 재사용할 수 있다.

Java 언어의 경우 위와 같이 Override를 할 경우 anotation으로 표시를 해준다.

 

 

추가 정보)

C++ 언어의 경우 다중상속을 지원하지만 (한 클래스의 부모가 여러개 있을 수 있음)

단, JAVA 언어의 경우 상속은 하나만 받을 수 있다

대신 Interface를 통한 구현은 무한정 받을 수 있다

(상속(Inheritance)과 구현(implement)에 대한 차이 및 유용성은 다음에 추가적으로 다시 정리하겠다) 

 

 

 

 

Overloading은 파라미터가 다른 경우, 동일한 메서드 혹은 생성자의 이름을 사용할 수 있는 방법을 일컫는다 

 

C언어의 경우 아래와 같이 메서드의 이름이 같으나 매개변수가 다른 경우를 허용하지 않는다

(아래와 예시를 C파일로 사용할 경우 컴파일 에러가 발생한다)

그렇기에 각 메서드의 이름이 달라야하는 불편함이 생기고 이로 인해 네이밍이 복잡해질 수 있다

 

void func() {
}

void func(int a) {
}

 표 2. Overloading 예시

 

 

하지만 C++, JAVA 등과 같은 언어에서는 매개변수가 달라지는 경우를 지원한다

(메서드 뿐만 아니라 생성자에서도 지원한다)

Overloading을 통해 동일한 기능을 가지는 메서드의 경우 같은 이름을 사용할 수 있다

(단, 매개변수가 달라야한다)

 

'공부 > 기본 개념 공부' 카테고리의 다른 글

절차 지향, 객체 지향 차이  (0) 2022.03.06