오늘 수업을 듣다가 교수님께서 다음과 같은 언급을 하셨다. 여러가지 언급들도 많았지만 Functional Overloading, Functional Overriding관련 얘기를 하셨다. 그러고 나서 들어보니 결국 자바에서 사용하는 메서드 오버로딩, 메서드 오버라이딩이랑 거의 똑같은 개념이어서 다시 정리하게 되었다.
물론 개념적으로 여러 차이도 있긴 하지만 핵심은 상속이 되었는지에 대한 차이가 가장 중요한 것이라고 말씀해주셨다.
method signature
가 달라졌다면 오버로딩method signature
가 다르지 않게 사용한다면 오버라이딩public class Parent {
void foo(int a, int b) {
return a;
}
}
아래에 자식 클래스이다.
public class Child extends Parent {
void foo(int a, int b, int c) { // 이 친구는 오버로딩일까? 오버라이딩일까? 이 부분은 생각해보자.
}
}
이 단어에 대해서는 오늘 처음 들어봤다. 어찌보면 너무 당연한 단어이지만 중요하게 생각을 하지 않은 것일 수도 있다고 생각했다.
메소드 시그니쳐 : 메서드 이름과 매개변수 리스트의 조합을 말한다.
여기서 메서드 이름과 매개변수 리스트가 중요하다! 왜냐하면 오버로딩
때문이다. 항상 기준을 메서드 시그니쳐
에 둔다.
그래서 너무 기본적인 내용이지만 확실하게 다시 되새기고 가면 좋을거 같다.