함수 오버로딩

나는 최근에 일부 프로그래밍 언어로 구현되었으며 일반적으로 함수 오버로딩 또는 메서드 오버로딩으로 알려진 객체 지향 프로그래밍의 주요 기능을 발견했습니다.

간단히 말해서 이름은 같지만 구현이 다른 여러 함수 또는 메서드를 정의할 수 있습니다.

메소드가 인수의 다른 구성을 취하고 각 경우에 다른 유형을 리턴할 수 있는 상황에서 매우 유용할 수 있습니다.

함수 오버로딩에 대해 더 흥미로운 점은 Python 및 PHP와 같은 많은 프로그래밍 언어에서 불법으로 간주되지만 C++, C#, Java, Swift 및 Kotlin과 같은 다른 프로그래밍 언어에는 내장되어 있다는 것입니다.

다형성과 함수 오버로딩에 대해 Java 코스에서 객관식 질문을 통해 알게 되었습니다.

그들이 사용한 예는 다음과 같습니다.

public class Zap {
    static boolean zap() { return true; }
    static int zap(boolean x) { return 0; }
    static double zap(int x) { return 0.5; }
    static String zap(double x) { return "Zap!"; }
    static boolean zap(String x) { return false; }
    public static void main(String[] args) {
        System.out.println(zap(zap(zap(zap(1)))));
    }
}


당신이 생각하는 출력은 무엇입니까?

ㅏ. 진실
비. 0
씨. 0.5
디. 기력!
이자형. 거짓

디버거의 도움으로 중첩된 메서드 호출을 추적할 수 있습니다.



Java는 실제 인수의 유형에 따라 각 메서드 호출에 사용할 메서드 정의를 결정합니다.

가장 안쪽의 zap은 정수를 취하므로 Java는 세 번째 메서드 정의를 선택합니다. Double 유형을 반환하므로 다음 zap은 네 번째 메서드 정의를 사용할 것입니다.

This post은 원래 기술에 관한 모든 것을 쓰는 my blog에 게시되었습니다.

좋은 웹페이지 즐겨찾기