반응형
[Java, 객체지향] 오버로딩이란? (overloading)
오버로딩 (Overloading)
overload는 영어로 '과적하다'라는 뜻으로,
overloading은 한 클래스 안에 같은 이름의 메서드를 여러 개 정의하는 것이다.
오버로딩이 성립하려면 아래 조건을 모두 만족해야 한다.
- 메서드 이름이 같아야 한다.
- 매개변수의 개수 또는 타입이 달라야 한다.
- 반환(return) 타입은 영향 없다. (=return 타입이 다르다고 오버로딩이 성립하는 게 아니다)
ex.
long add(int a, long b) { return a+b; }
long add(long a, int b) { return a+b; }
변수는 같은 이름이 여러 개 있을 수 없다.
메서드도 변수처럼 같은 이름이 여러 개 있으면 안 될 것 같지만,
Java에서는 오버로딩이 가능하다.
이는 오버로딩에 여러 장점이 있기 때문이다.
오버로딩의 장점
- 메서드의 이름만 보고도 메서드의 기능을 쉽게 예측할 수 있다.
- 메서드의 이름을 짓는 데 고민을 덜 수 있다.
자주 사용하는 println() 메서드도 사실은 오버로딩 되어있다.
void println()
void println(boolean x)
void println(char x)
void println(char[] x)
void println(double x)
void println(float x)
void println(int x)
void println(long x)
void println(Object x)
void println(String x)
만약 println() 메서드가 위와 같이 오버로딩 되어있지 않았다면,
printlnBool(), printlnChar(), printlnDouble() ,,,
이렇게 복잡한 메서드 이름을 다 외워야 할 것이다.
cf.
오버로딩과 오버라이딩은 이름만 비슷할 뿐 서로 아무 관련 없는 것이다.
(출처: 유튜브 남궁성의 정석코딩)
반응형
'Java' 카테고리의 다른 글
[Java, 객체지향] 지역 변수, 멤버 변수의 초기화 (0) | 2021.08.11 |
---|---|
[Java, 객체지향] 생성자(constructor) 의미와 종류 (+this) (0) | 2021.08.11 |
[Java, 객체지향] IS-A 관계, HAS-A 관계 차이 (상속 Inheritance) (0) | 2021.08.11 |
[Java, 객체지향] 다형성이란? (Polymorphism) (0) | 2021.08.11 |
[Java, 객체지향] 가상 메서드 (virtual method) (0) | 2021.08.11 |