오버로딩

개발/Java

가변인자(varargs)

기존에는 메서드의 매개변수 개수가 고정적이었으나, JDK1.5부터 동적으로 지정해 줄 수 있게 되었으며, 이 기능을 가변 인자라고 한다. 가변 인자는 '타입... 변수명'과 같은 형식으로 선언하며. PrintStream 클래스의 printf()가 대표적인 예다. public PrintStream printf(String format, Object... args) { ... } 위와 같이 가변 인자 외에도 매개변수가 더 있다면, 가변 인자를 매개변수 중에서 제일 마지막에 선언해야 한다. 그렇지 않다면, 컴파일 에러가 발생한다. 가변 인자인지 아닌지를 구별할 방법이 없기 때문에 허용하지 않는 것이다. 이제 아래 코드를 살펴보자. String concatenate(String s1, String s2){ ....

개발/Java

오버로딩과 오버라이딩

오버로딩 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 메서드 오버로딩, 즉 오버로딩이라고 한다. 오버로딩에는 몇 가지 조건이 있다. 메서드 이름이 같아야 한다. 매개변수의 개수 또는 타입이 달라야 한다. 메서드의 이름이 같다 하더라도 매개변수가 다르면 서로 구별될 수 있다. 매개변수에 의해서만 구별되므로 반환 타입은 오버로딩을 구현하는데 아무런 영향을 주지 못한다. 위의 조건을 만족시키지 못하는 메서드는 중복 정의로 간주되어 컴파일 시 오류가 발생한다. 이제 예시를 통해 알아보겠다. long add(int a, long b) { return a+b;} long add(long a, int b) { return a+b;} 두 메서드는 int형과 long형 매개변수가 하나씩 선언되어 있지만,..

Debin
'오버로딩' 태그의 글 목록