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 |
---|