[Java]메소드(Method)와 오버로딩(Overloading)의 사용법 및 예제
1.선언 및 호출하기
메소드도 변수와 같이 클래스 내에 선언 및 정의한 뒤, 필요할 때 호출해서 사용한다.
1.1 Method 선언부
선언부에는 접근자-반환할 자료형-메소드 명-매개변수 순서대로 넣어준 뒤
정의 할 내용을 다음 { } 괄호 안에 넣어준다.
1) 접근자
해당 메소드를 외부에서 접근가능할 지의 여부를 결정한다.
2) 반환 형
반환 자료형에서 void는 아무것도 반환하지 않겠다는 것을 의미하고
그 외에는 기본자료형부터 레퍼런스 자료형까지 모두 반환 가능하다.
3) 메소드명
메소드 명은 이 메소드가 어떤 기능을 하는 메소드인지 이름만 보고 알 수 있도록 짓는게 좋다.
그리고 Java에서는 메소드 명의 첫글자는 소문자로 쓰는게 관행이다.
4) 매개변수
해당 메소드를 호출할 때 넘겨줘야 할 값들이 있다면 여기서 넘겨줄 수 있다.
세부 내용은 이 포스팅의 [2. 매개변수] 항목에서 다루었다.
1.2. Method 정의부
정의부에서는 이 함수가 호출되었을 때 실행할 코드들을 넣어준다.
만약 선언할 때 반환형이 void라면 위의 예시처럼 아무것도 반환하지 않아도 되지만
명시해준 반환형이 있다면 아래의 예시처럼 무엇인가 반환해줘야한다.
2. 매개변수(Parameter)
매개변수를 이용하면 메소드를 호출할 때 동시에 데이터를 전달할 수 있다.
메소드를 호출하면서 동시에 매개변수를 넘겨주고 싶을 때는 아래와 같이 하면 된다.
public void getInfo(int i,boolean b,String s){
System.out.printf("parameter i: %d, y: %b, s: %s",10,true,"hello");
}
매개변수로 int,boolean,String들을 받아온 뒤 출력하는 예제이다.
매개변수로 가져오고 싶을 때는 ()괄호안에 자료형 변수명 순서로 적어주면 된다.
3. 오버로딩(Overloading)-중복메소드
메소드를 만들 때, 완전히 동일하게 중복되있는 메소드를 만들 수 없다.
하지만 이름은 같고 매개변수의 개수나 타입이 다른 메소드를 여러개 만들수는 있다.
아래는 오버로딩의 예시이다.
//hello 메서드
public void hello(){
System.out.println("메서드입니다.");
}
//매개변수가 1개인 hello 메소드
public void hello(int i){
}
//매개변수가 1개지만 타입이 다른 hello 메소드
public void hello(boolean i){
}
//매개변수가 2개인 hello메소드
public void hello(int i,boolean b){
}
//오류-반환형만 다른 메소드는 안됨.
public String hello(){
return "hello";
}
위와 같이 이름이 같지만 매개변수 갯수나 타입이 다르면
동일한 이름의 메소드를 여러개 만들 수 있다.
보통 한 기능을 하지만 매개변수가 여러 경우의 수로 들어올 수 있을 때 사용한다.
단, 위의 예시처럼 반환형만 다르거나 접근제어자가 다른 것으로는
오버로딩으로 인식되지 않으니 주의하자.
Reference
이 포스팅은 아래의 강좌를 참고하여 만들어졌습니다.
- 자바 프로그래밍 입문 강좌 (renew ver.) - 초보부터 개발자 취업까지!!
https://www.inflearn.com/course/%EC%8B%A4%EC%A0%84-%EC%9E%90%EB%B0%94_java-renew/dashboard
'Language > Java' 카테고리의 다른 글
[Java]객체와 메모리의 관계, null과 NullPointerException의 정리 및 예제 (0) | 2020.09.06 |
---|---|
[Java]접근제어자(Access Modifier) 개념 정리 (0) | 2020.08.26 |
[Java]클래스 제작과 객체 생성하기 예제 (0) | 2020.08.26 |
[Java]객체 지향 프로그래밍의 기초-객체와 클래스의 개념 및 예제 (0) | 2020.08.26 |
[JAVA]반복문 개념 정리 for, foreach,whlie, do-whlie문 사용법 및 예제 (0) | 2020.08.21 |