일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 입출력
- 제어자
- 변수
- 람다식
- JSP
- array
- 메서드
- 배열
- try-catch
- 예외
- 인터페이스
- File입출력
- I/O
- 예외처리
- DB
- 접근제어자
- 객체
- 상속
- 객체지향
- Connection
- java
- for문
- ToString
- 커넥션 풀
- 다형성
- 내장 객체 영역
- StringBuffer클래스
- Interface
- StringBuffer
- 에러
- Today
- Total
ksouth9
객체지향언어(4) - 메서드(2) 본문
메서드 호출
메서드를 호출해야 구현부{}의 문장들이 수행된다.
메서드 호출방법
객체참조변수이름.메서드이름(); //매개변수가 없는 메서드 호출
객체참조변수이름.메서드이름(인수1,인수2,...) //매개변수가 있는 메서드 호출
Car myCar = new Car(); //객체 생성
myCar.accelerate(60,3); //myCar 인스턴스의 accelerate()메서드 호출
accelerate()메서드를 호출하기 위해서는 먼저 Car클래스의 인스턴스를 생성한 다음 참조변수 myCar를 통해 accelerate()메서드를 호출할 수 있다.
같은 클래스 내의 메서드끼리는 참조변수를 사용하지 않고도 서로 호출이 가능하다. 하지만 클래스메서드(static메서드)는 같은 클래스 내의 인스턴스 메서드를 호출 할 수 없다.
클래스 메서드
- 메서드 앞에 static이 붙어 있는 메서드
인스턴스 메서드
- 반드시 객체 생성해야만 호출 가능
메서드를 생성할 때 클래스 메서드(static 메서드)는 클래스명을 생략하고 바로 메서드 호출이 가능하다.
메서드이름(인수1,인수2,...); //static 메서드 호출하는 방법
add(1,2); //int add(int a, int b);를 호출
int result = add(1,2); //int add(int a, int b)를 호출하고, 결과를 result에 저장
인자(argument)
- 메서드를 호출할 때 괄호()안에 지정해준 값들을 '인자' 또는 '인수' 라고 한다.
- 인자의 개수와 순서는 호출된 메서드에 선언된 매개변수와 일치해야 한다.
- 메서드가 호출되면서 매개변수에 대입되므로, 인자의 타입은 매개변수의 타입과 일치해야 한다.
매개변수(parameter)
- 메서드를 생성할 때 괄호()안에 지정해준 변수들을 '매개변수'라고 한다.
메서드에 선언된 매개변수의 개수보다 많은 값을 괄호에 넣거나 타입이 다른 값을 넣으면 컴파일러가 에러를 발생시킨다.
return문
return문은 현재 실행중인 메서드를 종료하고 호출한 메서드로 되돌아간다.
반환타입이 'void'인 경우, return문 없이도 아무런 문제가 없었던 이유는 컴파일러가 메서드의 마지막에 'return;'을 자동으로 추가해주었기 때문이다. 그러나 반환타입이 'void'가 아닌 경우, 즉 반환값이 있는 경우, 반드시 return문이 있어야 한다. return문이 없으면 컴파일 에러가 발생한다.
반환값(return value)
return문의 반환값으로 주로 변수가 오지만 항상 그런 것은 아니다. 변수에 결과값을 담지 않고 바로 수식으로 쓸 수 있다.
int add(int x, int y){
return x + y;
}
매개변수 유효성 검사
유효성검사
- 요청한 데이터가 어떤 조건에 충족하는지 확인하는 작업
메서드의 구현부를 작성할 때, 먼저 해야 하는 일이 매개변수의 값이 적절한 것인지 확인하는 것이다.
타입만 맞으면 어떤 값도 매개변수를 통해 넘어올 수 있기 때문에, 가능한 모든 경우의 수에 대해 고민하고 그에 대비한 코드를 작성해야 한다.
float divide(int x, int y){
//작업을 하기 전에 나누는 수(y)가 0인지 확인한다.
if(y==0){
System.out.println("0으로 나눌 수 없습니다");
return 0; //매개변수가 유효하지 않으므로 메서드를 종료한다.
}
return x / (float)y;
}
위에 정의된 메서드 divide는 매개변수 x를 y로 나눈 결과를 실수(float타입)로 반환 하는데, 0으로 나누는 것은 금지되어 있기 때문에 계산 전에 y의 값이 0인지 확인해야 한다. y의 값이 0이면, 나누기를 계산할 수 없으므로 return문으로 작업을 중단하고 메서드를 빠져나와야 한다.
'Java' 카테고리의 다른 글
객체지향언어(4) - 메서드(4) (0) | 2022.03.04 |
---|---|
객체지향언어(4) - 메서드(3) (0) | 2022.03.03 |
객체지향언어(4) - 메서드(1) (0) | 2022.03.03 |
객체지향언어(3) - 변수 (0) | 2022.03.03 |
객체지향언어(2) - 객체,인스턴스 (0) | 2022.03.03 |