글
우리는 메소드 오버로드를 언제 사용할까요?
아마도 같은 메소드에 다양한 변수가 와야할 때에 사용해야할 겁니다.
6번줄에 오타가 있네요.
여러모로 증진시켜준다.(o)
Adder란 클래스를 만들어 static 메소드를 만들었고
이름도 똑같고 타입도 똑같고 다른거라고는 파라미터와 리턴값뿐입니다.
사용자가 정수2개를 넣으면 1번 메소드가 실행될 것이고,
정수 3개를 넣으면 2번 메소드가 실행되겠네요.
예상하셨다시피 문제없이 잘 실행됩니다.
이번에는 매개변수의 타입을 다르게하여 메소드 오버로딩을 해보죠.
1번 메소드는 리턴타입이 int이고
2번 메소드의 리턴타입은 double입니다.
사용자가 정수를 입력할수도 혹은 실수를 입력할때에 대비해서겠죠?
1번 방법과 같이 예상하셨으리라 생각합니다.
자바는 어떤 면에서는 엄격하고 어떤 면에서는 유한 모습을 가지고 있는 언어입니다.
자바를 처음 다운받으셨을 때 보신 화면있죠?
30억명이 자바로 동작하는 디바이스를 가지고있는만큼
강력한 언어란 말이겠죠.
코드에 에러는 뜨지만 실행은 일단 되는군요.
그렇다면 결과값은 타입은 어떻게 될까요.?
int 이네요.
Double타입 메소드와 순서를 바꾸니 타입이 double로 바뀌었습니다.
결론은 먼저 작성된 메소도를 컴파일러가 받아들이는군요.
메인 메소드를 10000000000개 오버로드 할 수 있습니다.
다만, String Array를 인수로 받은 것만 컴파일러가 호출합니다..
결론은 뻘짓. 이라고 생각했지만
결과값이 without 이네..? 뭔 일이지 싶어서 들여다보니
TestOverloding_4 클래스에 3개의 main메소드를 만들었고
3개의 메소드는 파라메터값만 다르게주니
에러없이 3개다 건재하게 살아있네요.
위 논리는 자바8에서 변경된 점으로 보이네요.
다음엔 메소드 오버라이드편으로 찾아뵙겠습니다 :)
참고사이트 : https://www.javatpoint.com/method-overloading-in-java
'프로그래밍발전소 ♫ > JAVA 발전소♫' 카테고리의 다른 글
java 인스턴스 초기화 블럭 - 1 ( java instance initialize block) (0) | 2017.08.06 |
---|---|
JAVA super keyword -3 (자바 슈퍼키워드 3편) (0) | 2017.08.03 |
JAVA super keyword 에 대해서 2 (자바 슈퍼키워드 -2 ) (1) | 2017.08.03 |
JAVA의 super keyword에 대해서 , ( 자바 슈퍼키워드) (1) | 2017.08.02 |
자바) 메소드 오버라이딩과 타입 프로모션 표 (데이터타입) (0) | 2017.07.27 |
RECENT COMMENT