Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 자바switch문
- 자바기타제어자
- 중첩for문
- 자바제어문
- 변수명명규칙
- read()함수
- 자바자료형
- 누승재귀
- SQL
- 팩토리얼재귀
- 자바접근지정자
- 반복문라벨
- 효율적인연산
- 연산자우선순위
- 오버로딩
- 자바형식
- 자바실행방법
- 자바if문
- 자바수우미양가
- 자바별찍기
- 겟셋함수
- 프로그래머스
- 자바상수
- 자바연산자
- 기타제어자
- 자바함수
- 클래스배열
- 변수의 초기화
- 자바클래스
- 오라클
Archives
- Today
- Total
h-i-s-t-o-r-y
[Java] 함수(function) / 오버로딩(overloading) 본문
> 자바에서의 함수(function) ?
반복적인 명령어들을 별도로 묶어서 선언하고, 필요할 때마다 호출해서 사용하는 것
자바 클래스 안에 선언된 함수들을 [멤버 함수] 또는 [메서드] 라고 부른다.
> 함수 선언 형식
[접근지정자] [기타제어자] 리턴자료형 함수명([매개변수...]){
[return문;]
}
> 함수를 선언하고 호출하려면 3가지를 알고 있어야 한다.
1) 기능 - 함수가 어떤 일을 하는가?
2) 매개변수 - 일을 처리하기 위해 어떤 변수를 매개로 받는가?
3) 리턴값(리턴자료형) - 일을 끝내고 어떤 타입의 값을 반환하는가?
> 함수의 선언 위치 ?
함수는 클래스 안에 선언되어야 하고, 또 함수 안에서 선언될 수 없다.
클래스의 main()도 함수이기 때문에 main()함수 안에 함수를 선언하지 않도록 주의하자.
> 구분선을 출력하는 함수
package days06;
public class Ex02 {
public static void main(String[] args) {
//구분선
drawLine(); // [함수 호출]
System.out.println("부서명 : 사원명");
//구분선
drawLine(); // [함수 호출]
System.out.println("생산부 : 홍길동");
System.out.println("총무부 : 김길동");
System.out.println("영업부 : 이길동");
System.out.println("생산부 : 박길동");
//구분선
drawLine(); // [함수 호출]
} //main
// main과 class 사이 [함수 선언]
public static void drawLine() {
System.out.println("*************");
}
} //class
> 오버로딩(overloading)
함수명과 매개변수가 모두 같은 함수는 다시 선언할 수 없지만
함수명은 같고, 매개변수의 갯수 또는 타입이 다른 함수는 중복선언 할 수 있다.
중복함수 == 오버로딩(overloading) == 오버로드(overload) == 중복 선언된 함수
(주의) 리턴자료형만 다른것은 중복함수가 아니다. 선언 XXX
> 구분선을 출력하는 함수를 오버로딩한 예제
package days06;
public class Ex02 {
public static void main(String[] args) {
//구분선()
drawLine();
System.out.println("부서명 : 사원명");
//구분선(int)
drawLine(30);
System.out.println("생산부 : 홍길동");
System.out.println("총무부 : 김길동");
System.out.println("영업부 : 이길동");
System.out.println("생산부 : 박길동");
//구분선(int,char)
drawLine(20, '#');
} //main
// 정해진 구분선을 출력하는 함수
// 매개변수 : 없음
public static void drawLine() {
System.out.println("*************");
}
// 원하는 길이만큼 구분선을 출력하는 함수
// 매개변수 : int변수 1개
public static void drawLine(int n) {
for (int i = 0; i < n; i++) {
System.out.print("-");
}
System.out.println("");
}
// 원하는 길이와 스타일로 출력하는 함수
// 매개변수 : int변수 1개, char변수 1개
public static void drawLine(int n, char style) {
for (int i = 0; i < n; i++) {
System.out.print(style);
}
System.out.println("");
}
} //class
> 두 정수의 합을 구해서 반환하는 함수(메서드)
1) 기능 : 두 정수의 합을 계산한다
2) 매개변수 : 두 정수 int a, int b
3) 리턴값(리턴자료형) : int 자료형의 합 결과값
package days06;
import java.util.Scanner;
public class Ex03 {
public static void main(String[] args) {
int a =10, b =20;
int result = hap(a,b);
System.out.printf("%d+%d=%d\n",a,b,result);
} //main
// 함수 선언
private static int hap(int a, int b) {
return a+b;
}
} //class
> 년도를 입력받아 윤년 / 평년 출력하기
package days09;
import java.util.Scanner;
public class Ex03_02 {
public static void main(String[] args) {
// 4자리 년도를 입력받아서 "윤년" / "평년"을 출력
// "윤년" 이란 ?
int year; //2010 년도는 보통 int로 선언
// String year; //"2010"
Scanner scanner = new Scanner(System.in);
System.out.print("> 년도 입력 ? ");
year = scanner.nextInt();
if ( isLeapYear(year) ) {
System.out.println("윤년 (leap year)");
} else {
System.out.println("평년 (common year)");
}
}//main
public static boolean isLeapYear(int year) {
if( year%4==0 && year%100!=0 || year%400==0 ) return true;
return false;
}
}//class
'Java' 카테고리의 다른 글
[Java] switch() 예제 (0) | 2021.07.16 |
---|---|
[Java] 정규표현식 - String.matches(regex) / pattern, matcher (0) | 2021.07.13 |
[Java] 배열(Array) (0) | 2021.07.13 |
[Java] System.in.read() (0) | 2021.07.12 |
[Java] 별찍기 (0) | 2021.07.12 |
Comments