자바 Overriding vs Overloading

갱두·2021년 9월 28일
0

📚 Java

목록 보기
6/9

Overriding vs Overloading

둘 다 다형성을 높여주는 개념이고 비슷하지만, 전혀 다른 개념이라고 해도 무방할 만큼 차이가 크다
공통점으로는 같은 이름의 다른 함수를 호출한다는 것

오버라이딩 (Overriding)

상위 클래스 혹은 인터페이스에 존재하는 메소드를 하위 클래스에서 필요에 맞게 재정의하는 것을 의미한다. 자바의 경우에는 오버라이딩 시 동적바인딩 된다.
✔️ 동적 바인딩 : 런타임시 필요한 메소드를 찾아가는 것.

아래의 경우, SuperClass 의 fun이라는 인터페이스를 통해 Subclass의 fun이 실행됨

SuperClass object = new SubClass();
object.fun();

오버로딩 (Overloading)

오버로딩 메소드의 이름은 같다. return 타입은 동일하거나 다를 수 있지만, return 타입만 다를 수는 없다.
매개변수의 타입이나 갯수가 다른 메소드를 만드는 것을 의미하고, 다양한 상황에서 메소드가 호출될 수 있도록 함.
언어마다 다르지만, 자바의 경우 오버로딩은 다른 시그니쳐를 만드는 것으로, 아예 다른 함수를 만든 것과 비슷하다고 생각하면 된다.
시그니처가 다르므로 정적 바인딩으로 처리 가능하며, 자바의 경우 정적으로 바인딩 된다.

아래의 경우, fun(SuperClass super)가 실행됨

main(blabla) {
	SuperClass object = new SubClass();
    fun(object);
}

fun(SuperClass super){
	blabla ...
}
fun(SubClass sub){
	blabla ...
}
profile
👩🏻‍💻🔥

0개의 댓글