📢 메서드 구조
메서드는 다음과 같은 형식으로 선언
접근제한자 리턴타입 메서드명(매개변수) {
// 기능 구현
}
- 접근제한자: 메서드의 접근 범위를 정의 (예: public, protected, private)
- 리턴타입: 메서드가 반환할 값의 타입을 지정. 값이 없으면 void를 사용
- 메서드명: 소문자로 시작하며, 메서드를 호출할 때 사용하는 이름
- 매개변수: 메서드가 필요로 하는 입력값
📢 메서드 종류
- 정적 메서드 (static): 클래스의 인스턴스를 생성하지 않고도 호출할 수 있는 메서드
- 인스턴스 메서드: 클래스의 인스턴스를 생성한 후 호출할 수 있는 메서드
📢 접근 제어자
- public: 모든 클래스에서 접근 가능
- protected: 동일 패키지 및 자식 클래스에서 접근 가능
- default: 동일 패키지에서 접근 가능
- private: 해당 클래스 내에서만 접근 가능
접근 제어자는 private < default < protected < public 순서로 접근 권한이 높아짐.
📢 실습(1)
두 정수의 합을 반환하는 메서드 생성 및 호출
package day02;
public class Method01 {
public static void main(String[] args) {
System.out.println(sum(1, 2)); // 정적 메서드 호출
Method01 m = new Method01(); // 인스턴스 생성
m.sum2(10, 20); // 인스턴스 메서드 호출
}
// 두 정수의 합을 반환하는 정적 메서드
public static int sum(int num1, int num2) {
return num1 + num2;
}
// 두 정수의 합을 출력하는 인스턴스 메서드
public void sum2(int num1, int num2) {
System.out.println(num1 + num2);
}
}
결과
3
30
📢 실습(2)
사칙연산 메서드
package day02;
public class Method02 {
// static없이 사칙연산 ( + - * / % ) 각각 메서드 생성
public int sum(int a, int b) {
return a+b;
}
public int sub(int a, int b) {
return a-b;
}
public int mul(int a, int b) {
return a*b;
}
public void div(int a, int b) {
System.out.println(b==0 ? "0으로 나눌 수 없습니다." : a/(double)b);
}
public void mod(int a, int b) {
System.out.println(b==0 ? "0으로 나눌 수 없습니다." : a%b);
}
public static void main(String[] args) {
Method02 m = new Method02();
System.out.println(m.sum(101, 20));
System.out.println(m.sub(101, 20));
System.out.println(m.mul(101, 20));
m.div(101, 2);
m.mod(101,20);
//div, mod => 나누는 값(b)이 0이면 Exception 발생
//return 타입이 double Infinity
}
}
결과
121
81
2020
50.5
1
📢 실습(3)
정수 하나를 주면 해당 정수의 구구단 출력하는 메서드 (리턴 없음.)
package day02;
import java.util.Scanner;
public class Method03 {
// 정수 하나를 주면
// 해당 정수의 구구단 출력하는 메서드 (리턴 없음.)
public void gugu(int a) {
for(int i=1; i<=9; i++) {
System.out.print(
a + " ✖ " + i + " = " + a*i + " "
);
}
}
public static void main(String[] args) {
Scanner scan = new Scanner(System. in);
System.out.println("구구단을 출력할 정수를 입력해 주세요. >>");
int input = scan.nextInt();
Method03 m = new Method03();
m.gugu(input);
scan.close();
}
}
결과
구구단을 출력할 정수를 입력해 주세요. >>
3
3 ✖ 1 = 3 3 ✖ 2 = 6 3 ✖ 3 = 9 3 ✖ 4 = 12 3 ✖ 5 = 15 3 ✖ 6 = 18 3 ✖ 7 = 21 3 ✖ 8 = 24 3 ✖ 9 = 27
📢 메서드 오버로딩 (Method Overloading)
메서드 오버로딩은 동일한 이름의 메서드를 여러 개 정의하는 기술로, 다음 두 가지 조건 중 하나를 충족해야 함.
- 매개변수의 개수가 다름: 같은 이름의 메서드는 서로 다른 개수의 매개변수를 가질 수 있음
- 매개변수의 타입이 다름: 매개변수의 타입이 서로 다른 경우에도 같은 이름의 메서드를 사용 가능
리턴 타입은 오버로딩의 조건에 영향을 미치지 않으며, 매개변수의 이름도 중요하지 않다.
public int sum(int num1, int num2) {
return num1 + num2;
}
public int sum(int num1, int num2, int num3) {
return num1 + num2 + num3;
}
public int sum(int ...num) {
int result = 0;
for(int temp : num) {
result += temp;
}
return result;
}
위 코드에서 sum 메서드는 두 개, 세 개, 그리고 가변 개수의 정수를 매개변수로 받는다.
📢 가변인자 메서드
가변인자 메서드는 매개변수의 개수가 고정되지 않은 경우에 사용.
가변인자는 ... 구문을 사용하여 정의하며, 내부적으로 배열처럼 처리
public int sum(int ...num) {
int result = 0;
for(int temp : num) {
result += temp;
}
return result;
}
System.out.println(sum(10, 20)); // 30
System.out.println(sum(10, 20, 30)); // 60
System.out.println(sum(1, 2, 3, 4, 5, 6, 7, 8, 9)); // 45
위 메서드는 인자를 배열 형태로 받아들여, 전달된 모든 숫자의 합을 계산. 호출 시에는 매개변수의 개수를 자유롭게 조정가능.
'백엔드 > Java' 카테고리의 다른 글
| Java로 로또 번호 생성기 만들기(1) (0) | 2024.09.29 |
|---|---|
| Java로 계산기 만들기 (1) | 2024.09.28 |
| Java 배열, 문자열 처리 (2) | 2024.09.26 |
| Java Scanner 클래스 (2) | 2024.09.26 |
| Java 기초 다지기: 변수, 데이터 타입, 연산자 (2) | 2024.09.26 |