"오버로딩"의 두 판 사이의 차이
2번째 줄: | 2번째 줄: | ||
== 개요 == | == 개요 == | ||
− | |||
− | |||
− | |||
− | |||
== 특징 == | == 특징 == | ||
+ | === 성립 조건 === | ||
+ | 오버로딩(Overloading)을 성립하기 위해선 몇가지 조건에 성립해야한다. 첫번째, 메소드의 이름이 같아야 한다. 위의 개념과 오버로딩은 같이 한 클래스 내에 동일한 이름의 메소드가 여러개 정의되는 것이다. 여러 메소드의 이름은 동일하되 처리하는 기능과 그에 따른 결과값은 모두 다르다. 메소드의 이름이 다른것은 오버로딩이 성립되었다고 할 수 없다. 두번째, 매개변수의 개수 또는 타입이 달라야 한다. 오버로딩은 여러 메소드의 이름이 동일해야하기에 입력값에 따른 처리 기능을 구별하는 기준이 매개변수가 된다. 만약 매개변수의 개수와 타입이 동일하다면 여러 메소드를 구별할 수 없기에 오버로딩이 성립되지않는다. 세번째, 리턴타입은 오버로딩 성립에 영향을 주지않는다. 동일한 이름을 가진 메소드들의 매개변수의 타입 또는 개수가 다르고 리턴타입이 같으면 오버로딩은 성립된다. 하지만(여기부터 쓰기) <ref name="세바의 코딩교실"> , 〈[https://programmer-seva.tistory.com/78^20.메소드오버로딩(Method Overloading)]〉, 《개인블로그》, 2016-02-13</ref> | ||
− | == | + | === 종류 === |
− | |||
− | == | ||
오버로딩의 종류는 메소드 오버로딩과 생성자 오버로딩으로 나뉜다. 오버로딩이라고만 부르면 주로 메소드 오버로딩을 칭한다고 생각하면 된다.<ref name="https://hunit.tistory.com/156">AraGrooveit, 〈[자바(JAVA), 생성자 오버로딩과 메소드 오버로딩]〉, 《개인블로그》, 2015-11-04</ref> | 오버로딩의 종류는 메소드 오버로딩과 생성자 오버로딩으로 나뉜다. 오버로딩이라고만 부르면 주로 메소드 오버로딩을 칭한다고 생각하면 된다.<ref name="https://hunit.tistory.com/156">AraGrooveit, 〈[자바(JAVA), 생성자 오버로딩과 메소드 오버로딩]〉, 《개인블로그》, 2015-11-04</ref> | ||
− | ===메소드 오버로딩=== | + | ====메소드 오버로딩==== |
*'''특징''' | *'''특징''' | ||
1. 매개변수의 타입의 개수나 순서 중 하나만 달라도 오버로딩이 가능하다. | 1. 매개변수의 타입의 개수나 순서 중 하나만 달라도 오버로딩이 가능하다. | ||
71번째 줄: | 67번째 줄: | ||
− | ===생성자 오버로딩=== | + | ====생성자 오버로딩==== |
*'''특징''' | *'''특징''' | ||
1. 매개변수의 타입의 개수나 순서 모두 달라야지 오버로딩이 가능하다.<ref name="https://hunit.tistory.com/156">AraGrooveit, 〈[자바(JAVA), 생성자 오버로딩과 메소드 오버로딩]〉, 《개인블로그》, 2015-11-04</ref> | 1. 매개변수의 타입의 개수나 순서 모두 달라야지 오버로딩이 가능하다.<ref name="https://hunit.tistory.com/156">AraGrooveit, 〈[자바(JAVA), 생성자 오버로딩과 메소드 오버로딩]〉, 《개인블로그》, 2015-11-04</ref> |
2020년 8월 6일 (목) 12:00 판
오버로딩(Overloading)이란 같은 이름의 메소드(Method) 또는 생성자를 매개변수의 개수나 타입을 다르게 지정함으로써 2개 이상 정의하는것을 의미한다.[1]
개요
특징
성립 조건
오버로딩(Overloading)을 성립하기 위해선 몇가지 조건에 성립해야한다. 첫번째, 메소드의 이름이 같아야 한다. 위의 개념과 오버로딩은 같이 한 클래스 내에 동일한 이름의 메소드가 여러개 정의되는 것이다. 여러 메소드의 이름은 동일하되 처리하는 기능과 그에 따른 결과값은 모두 다르다. 메소드의 이름이 다른것은 오버로딩이 성립되었다고 할 수 없다. 두번째, 매개변수의 개수 또는 타입이 달라야 한다. 오버로딩은 여러 메소드의 이름이 동일해야하기에 입력값에 따른 처리 기능을 구별하는 기준이 매개변수가 된다. 만약 매개변수의 개수와 타입이 동일하다면 여러 메소드를 구별할 수 없기에 오버로딩이 성립되지않는다. 세번째, 리턴타입은 오버로딩 성립에 영향을 주지않는다. 동일한 이름을 가진 메소드들의 매개변수의 타입 또는 개수가 다르고 리턴타입이 같으면 오버로딩은 성립된다. 하지만(여기부터 쓰기) [2]
종류
오버로딩의 종류는 메소드 오버로딩과 생성자 오버로딩으로 나뉜다. 오버로딩이라고만 부르면 주로 메소드 오버로딩을 칭한다고 생각하면 된다.[3]
메소드 오버로딩
- 특징
1. 매개변수의 타입의 개수나 순서 중 하나만 달라도 오버로딩이 가능하다. 2. 리턴타입은 오버로딩에 영향을 주지않는다.[3]
- 구조
public class 클래스이름 { // A메소드 호출 void A메소드() { System.out.println("매개 변수값 = 없음"); } // A메소드에 매개변수a로 int형 호출 void A메소드(int a) { System.out.println("매개 변수값 = " + a); } // A메소드에 매개변수a로 char형 호출 void A메소드(char a) { System.out.println("매개 변수값 = " + a); } }
- 활용
// 오버로딩하기 위한 클래스 생성 public class Overloading { // test() 호출 void test() { System.out.println("매개변수 = 없음"); } // test에 매개변수a로 int형 호출 void test(int a) { System.out.println("매개변수 = " + a); } // test에 매개변수a,b로 int형 2개 호출 void test(int a, int b) { System.out.println("매개변수 = " + a + "," + b); } // test에 매개변수a로 char형 호출 void test(char a) { System.out.println("매개변수 = " + a); } }
// 위의 생성된 클래스 사용 public class test { public static void main(String[] args) { // 객체 생성 Overloading ol = new Overloading(); // test() 호출 -> 출력 : 매개변수 = 없음 ol.test(); // test(int a, int b) 호출 -> 출력 : 매개변수 = 5 , 10 ol.test(5, 10); // test(char a) 호출 -> 출력 : 매개변수 = x ol.test(x); } }
생성자 오버로딩
- 특징
1. 매개변수의 타입의 개수나 순서 모두 달라야지 오버로딩이 가능하다.[3]
- 구조
class 클래스이름 { private 타입 매개변수a; private 타입 매개변수b;
public 클래스이름(타입 매개변수a_1) { 매개변수a = 매개변수a_1; }
public 클래스이름(타입 매개변수a_1, 타입 매개변수b_1) { 매개변수a = 매개변수a_1; 매개변수b = 매개변수b_1; } }
- 활용
// 오버로딩하기 위한 생성자 정의 class Overloading { private String test1; private int test2; public Overloading(String a) { test1 = a; } public Overloading(String a, int b) { test1 = a; test2 = b; } }
// 위의 정의된 생성자 사용 public class test { public static void main(String[] args) { // 생성자 사용 Overloading ol1 = new Overloading("x"); Overloading ol2 = new Overloading("x", 5); } }
각주
참고자료
- 개발이 하고 싶어요, <오버로딩(Overloading) 오버라이딩(Overriding)>, 2013-12-09
- 우종선, <자바 오버로딩/메소드 오버로딩/생성자 오버로딩>, 2017-09-15
- AraGrooveit Blog, <자바(JAVA), 생성자 오버로딩과 메소드 오버로딩>, 2015-11-04
같이 보기