메소드 선언
메소드 선언은 선언부(리턴 타입, 메소드 이름, 매개 변수 선언)와 실행 블록으로 구성
- 리턴 타입
- 리턴값(메소드를 실행한 후의 결과값)의 타입
- 메소드는 리턴값이 있을 수도 있고 없을 수도 있으나 리턴값이 있을 경우 리턴 타입이 선언부에 명시
void powerOnO { ••• }
double divide( int x, int y ) { ••• }
// 리턴값의 유무는 메소드를 호출하는 방법에서 다름
powerOnO;
double result = divide( 10, 20 );
- 메소드 이름
- 숫자로 시작하면 안 되고, $와 _를 제외한 특수 문자를 사용하지 말아야 합니다.
- 관례적으로 메소드 이름은 소문자로 작성합니다.
- 서로 다른 단어가 혼합된 이름이라면 뒤이어 오는 단어의 첫 글자는 대문자로 작성합니다.
- 매개 변수 선언
- 매개 변수는 메소드가 실행할 때 필요한 데이터를 외부로부터 받기 위해 사용
- 매개 변수의 개수를 모를 경우
public class Computer {
// 1. 매개 변수를 배열타입으로 선언
int suml(int[] values) {
int sum = 0;
for(int i=0; i<values.length; i++) {
sum += values[i];
}
return sum;
}
// 2. 배열을 생성하지 않고 값의 목록만 넘겨주는 방법
// - 메소드의 매개 변수를 •••를 사용해서 선언하게 되면
// 메소드 호출 시 넘겨준 값의 수에 따라 자동으로 배열이 생성되고 매개값으로 사용
int sum2(int ••• values) {
int sum = 0;
for(int i=0; i<values.length; i++) {
sum += values[i];
}
return sum;
}
}
public class ComputerExample {
public static void main(String[] args) {
Computer myCom = new Computer();
int[] values1 = {1, 2, 3};
int resultl = myCom.sum1(values1);
int result2 = myCom.sum1(new int[] {1, 2, 3, 4, 5});
int result3 = myCom.sum2(l, 2, 3);
int result4 = myCom.sum2(new int[] { 1, 2, 3, 4, 5 });
}
}
리턴(return)문
- 리턴값이 있는 메소드
- 메소드 선언에 리턴 타입이 있는 메소드는 반드시 리턴을 사용해서 리턴값을 지정
- 리턴값이 없는 메소드: void
- void로 선언된 메소드에서도 return문을 사용할 수 있다.
- 이것은 리턴값을 지정하는 것이 아니라 메소드 실행을 강제 종료시키는 역할
- return;
- void로 선언된 메소드에서도 return문을 사용할 수 있다.
메소드 호출
1. 객체 내부에서 호출
2. 객체 외부에서 호출
// 1. 클래스로부터 객체를 생성
클래스 참조변수 = new 클래스( 매개값, … );
// 2. 참조 변수와 함께 도트(.) 연산자를 사용해서 메소드를 호출 가능
// 도트(.) 연산자는 객체 접근 연산자로 객체가 가지고 있는 필드나 메소드에 접근할 때 사용
참조변수.메소드( 매개값, … ); //리턴값이 없거나, 있어도 리턴값을 받지 않을 경우
타입 변수 = 참조변수.메소드( 매개값, … ); //리턴값이 있고, 리턴값을 받고 싶을 경우
Car myCar = new Car();
myCar.keyTurnOn();
myCar.run();
int speed = myCar.getSpeed();
메소드 오버로딩
- 클래스 내에 같은 이름의 메소드를 여러 개 선언하는 것을 메소드 오버로딩이라고 한다.
- 매개 변수의 타입, 개수, 순서 중 하나가 달라야 한다
확인 문제
1. 메소드에 대한 설명입니다. 빈 칸에 알맞은 단어를 쓰세요.
① 리턴값이 없는 메소드는 리턴 타입을 ( void )로 해야 한다.
② 리턴 타입이 있는 메소드는 리턴값을 지정하기 위해 반드시 ( return )문이 있어야한다.
③ 매개값의 개수를 모를 경우 ( … )를 이용해서 매개 변수를선언할 수있다.
④ 같은 이름의 메소드를 여러 개 선언하는 것을 메소드 ( 오버로딩 )이라고한다.
2. 메소드 오버로딩에 대한 설명으로 맞는 것에 O표, 틀린 것에 x표 하세요.
① 동일한 이름의 메소드를 여러 개 선언하는 것을 말한다. ( O )
② 반드시 리턴 타입이 달라야 한다. ( X )
-> 매개 변수의 타입, 개수, 순서 중 하나가 달라야 한다
③ 매개 변수의 타입, 개수, 순서를 다르게 선언해야 한다. ( O )
④ 매개값의 타입 및 개수에 따라 호출될 메소드가 선택된다. ( O )
3. MemberService 클래스에 login() 메소드와 logoutQ 메소드를 선언하려고 합니다. login() 메소드를 호출할 때에는 매개값으로 id와 password를 제공하고, logout() 메소드는 id만 매개값으로 제공합니다. [] 에서 MemberSeivice 클래스와 login(), logout() 메소드를 선언해보세요
package CH06.test03;
public class Memberservice {
boolean login(String id, String password) {
if(id.equals("hong") && password.equaIs("12345")) {
return true;
} else {
return false;
}
}
void logout(String id) {
System.out.println("로그아웃 되었습니다.");
}
}
package ch04.test04;
public class MemberServiceExample {
public static void main(String[] args) {
MemberService memberservice = new MemberServiceQ;
boolean result = memberservice.login("hong", "12345");
if(result) {
System.out.println("로그인 되었습니다.");
memberService.logout("hong");
} else {
System.out.println("id 또는 password가 올바르지 않습니다.");
}
}
}
4. PrinterExample 클래스에서 Printer 객체를 생성하고 println() 메소드를 호출해서 매개값을 콘솔에 출력하려고 합니다. println() 메소드의 매개값으로는 int, boolean, double, String 값을 줄 수 있습니다. Printer 클래스에서 printlnO 메소드를 선언해보세요.
package CH06.test04;
public class Printer {
static void println(int value) {
System.out.println(value);
}
static void println(boolean value) {
System.out.println(value);
}
static void println(double value) {
System.out.println(value);
}
static void println(String value) {
System.out.println(value);
}
}
'JAVA' 카테고리의 다른 글
패키지와 접근 제한자 (0) | 2022.10.13 |
---|---|
인스턴스 멤버와 정적 멤버 (0) | 2022.10.13 |
생성자 (0) | 2022.10.12 |
열거 타입 (0) | 2022.09.26 |
배열 (0) | 2022.09.26 |