JAVA 메소드 오버로딩&오버라이딩(method overloading & overriding)

강효림·2023년 4월 16일
0

JAVA

목록 보기
8/19

method overloading 이란?

같은 클래스나 상속관계에서 동일한 이름의 메소드를 중복작성할 수 있는 기능.
이름은 동일한 대신 매개변수 타입이나 개수가 달라야 성립된다.
동일한 클래스나 상속관계에서 사용이 가능하다.
정적 바인딩이라서 호출될 메소드는 컴파일 시에 결정이 된다.

목적

이름이 같은 여러 개의 중복 메소드를 작성해 사용이 편리해진다.
컴파일 타임에 다형성 실현이 가능하다.

method overriding 이란?

서브클래스에서 슈퍼클래스에 있는 메소드와 동일한 이름의 메소드를 재작성할 수 있는 기능.
상속관계일때 사용할 수 있고 오버로딩과 달리 메소드의 이름, 매개변수 타입과 개수, 리턴타입이 모두 동일해야 성립이 된다.
동적 바인딩이라서 실행시간에 오버라이딩된 메소드를 찾아서 호출한다.
메소드 무시하기, 덮어쓰기라고도 해석이 된다.

동적바인딩

슈퍼클래스의 메소드가 아닌 서브클래스에 오버라이딩된(재정의된) 메소드가 무조건 실행되는 것이다.

목적

슈퍼클래스에 구현된 메소드를, 서브클래스에서 자신만의 내용으로 새롭게 재정의하고자 한다.
상속을 통해 '하나의 인터페이스에서 다른 내용 구현'이라는 객체지향의 다형성 실현이 가능하다.

super()

서브클래스에서 슈퍼클래스에 명시적으로 접근할 때 사용되는 레퍼런스다.
서브클래스에서만 사용할 수 있고 슈퍼클래스는 메소드 호출만 받는다.
오버라이딩은 동적 바인딩이나 super의 접근이 있으면 컴파일러가 정적 바인딩으로 처리한다.

0개의 댓글