반응형


만약 매치되는 데이터타입이 없다면 다른 타입으로 프로모션되는 것을 타입프로모션 ( 업캐스팅) 이라고합니다.

위의 다이어그램을 보면 Byte는 Short, int, long, float , double로 업캐스팅이 가능하며,

short는 int, long, float, double로 업캐스팅이 가능합니다. char 타입은 int, long, float, double로 가능하네요.

외워두시면 요긴하실거같습니다.






반응형
by 발전소장 에르 :) 2017. 7. 27. 12:05
반응형

우리는 메소드 오버로드를 언제 사용할까요?

아마도 같은 메소드에 다양한 변수가 와야할 때에 사용해야할 겁니다.


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



반응형
by 발전소장 에르 :) 2017. 7. 25. 18:15
| 1 |