[Java/객체지향] 메서드
2024. 8. 17. 20:06ㆍ프로그래밍 언어/Java
메서드
1. 문장들을 묶어놓은 것 = 문장들을 작업단위로 묶어서 이름 붙인 것 → [장점] 코드 중복 제거 /관리 용이/재사용 가능
public static void main(String args[]){
...중간 생략...
for(int i = 0;i<10;i++)
numArr[i] = (int)(Math.random()*10); //배열 초기화
for(int i = 0;i<10;i++)
System.out.printf("%d",numArr[i]); //배열 출력(1)
System.out.println();
...중간 생략... //코드 중복(1),(2)
for(int i = 0;i<10;i++)
System.out.printf("%d",numArr[i]); //배열 출력(2)
System.out.println();
//메서드
//메서드 이름 : printArr(){}
static void printArr(int[] numArr){
for(int i=0;i<10;i++)
System.out.printf("%d", numArr[i]);
System.out.println();
}
public static void main(String args[]){
for(int i = 0;i<10;i++)
numArr[i] = (int)(Math.random()*10);
printArr(numArr);//배열 출력
printArr(numArr);//배열 출력 -> 코드 중복 삭제
2. 어떤 값을 입력하면, 이 값으로 작업을 수행해서 결과를 반환
cf) 메서드 vs 함수
메서드와 함수는 거의 같은 개념 → 메서드는 객체지향에서 함수를 지칭하는 단어
[차이] 메서드: 반드시 클래스 안에 존재 vs 함수: 클래스에 독립적
- 메서드의 작성
- 반복적으로 수행되는 여러 문장을 메서드로 작성
- 하나의 메서드는 한 가지 기능만 수행하도록 작성→ 유지 및 보수 유리/간결 가독성
- (ex) 배열초기화와 배열 출력을 한 가지 메서드에 넣는 것이 아니라, 각각 작성)
메서드의 선언부/구현부
:반환타입 :메서드이름 :(매개변수)
int add (int x, int y) {
int result = x+y;
return result;
}
- 반환타입: 작업결과 타입 [출력] → 0 or 1개 → if) 여러 개일 경우 배열로 출력
- 매개변수: (작업에 필요한 값들)매개변수 목록 [입력] → 0~n개
지역변수(lv)
int add(int x, int y) { //지역변수1:x ,지역변수2:y
int result = x + y; //지역변수3:result
return result;
}
int multiply(int x, int y) {
int result = x * y;
return result;
}
매개변수(int x, int y)도 메서드 내에서 선언된 것으로 간주 = 지역변수
유효범위는 메서드 시작~종료
메서드 add와 multiply에 선언된 int x, int y는 이름이 같지만, 다른 변수
메서드 호출
print99danAll(); //구구단 전체 출력일라 입력값 필요X -> 그러므로 작업 결과를 저장할 변수를 따로 쓰지X
int result = add(3, 5);
- add(3, 5): 메서드 호출
- int result: 작업 결과를 저장할 변수 -> 없어도 되지만, 없으면 결과 저장 불가
메서드는 클래스 영역에서만 정의 가능
return문
- 반환타입이 void 아닌 경우, 반드시 return문 필요
- ex) if문의 결과에 따라 return문이 실행되지 않을 수 있기 때문에 → else 사용 항상 결과값이 반환되도록 해야함
class add{
public static void main(String[] args){
MyMath mm = new MyMath();
long result1 = mm.add(5L, 3L);
}
class MyMath{
long add(long a, long b) {
long result = a + b;
return ***result***;
}
반환값은 1)반환타입 2)작업결과를 저장할 변수 와 일치하거나 적어도 자동 형변환이 가능해야함
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java/객체지향] 오버로딩과 오버라이딩 (0) | 2024.08.19 |
---|---|
[Java/객체지향] static 메서드와 인스턴스메서드 (0) | 2024.08.18 |
[Java/객체지향] 매개변수 (0) | 2024.08.18 |
[Java/객체지향] 변수 (0) | 2024.08.16 |
[Java/객체지향] 클래스와 객체 (0) | 2024.08.14 |