Java/자바의 정석 3판

객체지향 프로그래밍(1) - 변수와 메서드(1)

나도관 2022. 11. 27. 17:06

선언위치에 따른 변수의 종류

클래스 변수(cv)

static int cv; // 클래스 변수(Class Variable)

사용 방법 - 클래스명.cv;

한 클래스의 모든 인스턴스들이 공통적인 값을 유지해야하는 경우 클래스 변수를 사용한다.

프로그램 종료 시까지 유지된다. public을 붙이면 전역 변수로 사용 가능하다.

ex) 카드 넓이, 높이 등

 

 

인스턴스 변수(iv)

int iv; // 인스턴스 변수(Instance Variable)

사용 방법 - 인스턴스명.iv; 

클래스 영역 내 선언. 인스턴스 생성시 만들어진다. 

 

인스턴스 별로 독립적인 저장공간을 가지므로 같은 클래스의 인스턴스라도 다른 값을 가질 수 있다.

- 인스턴스 별로 고유한 상태를 가져야 하는 속성을 iv로 선언한다.

ex) 카드의 종류, 번호 등

 

 

지역 변수(lv)

void method(){
	int lv = 0; //지역 변수(Local Variable)
}

메서드 내에서 선언되어, 메서드 내에서만 사용이 가능하다.

메서드가 종료되면 소멸되어 사용할 수 없다.

조건문 내에서 사용하는 변수들도 지역변수로, 해당 조건문 내 블럭{} 안에서만 사용이 가능하다.

 

 


메서드(Method)

int method(int x, int y){ //선언부
	//구현부
    int result = x+y;
    return result; //작업결과 반환값
}

작업을 수행하는 일련의 문장들의 묶음이다.

입력 값(매개 변수)를 이용하여 작업을 수행하고, 결과 값(return 값)을 반환한다.

메서드 명 앞에 반환타입을 지정해주어야하며, 결과 값의 타입과 일치하거나 자동형변환이 가능해야한다.

 

메서드의 호출

int result = method(1,2)

메서드 호출 시, 괄호에 지정해둔 값들을 인자(Argument)라 한다.

메서드에 선언된 매개변수의 순서와 갯수가 일치해야한다.

 


return문

void method(){
	//return; 컴파일러가 자동으로 추가
}

int multiply(int x, int y){
    return x*y; //변수 뿐만 아니라 수식을 넣어 수식의 결과 값을 반환할 수도 있다.
}

return문을 사용하면, 현재 실행 중인 메서드를 종료하고 호출한 메서드로 되돌아간다.

메서드 선언부에서 반환타입을 void로 지정해놓은 경우에는 컴파일러가 자동으로 return문을 추가한다.

 

return문을 이용한 매개변수의 유효성 검사

float divide(int x, int y){
	if(y==0){
    	System.out.println("0으로 나눌 수 없습니다.");
        return 0; //매개 변수가 유효하지 않으므로 메서드를 종료한다.
    }
    return x/(float)y;
}

메서드 작성 시, 매개변수의 유효성 검사를 진행할 것을 권장한다.

타입만 맞을 경우 어떤 값이든 넘어올 수 있기 때문에, 에러가 발생할 수 있다.

프로그램의 비정상적인 종료를 막기 위해서 필요한 작업.