JAVA/[멘토씨리즈]

[멘토 씨리즈] 메서드

Itchild 2024. 4. 9. 13:16
728x90
반응형

 

메서드란 ? 클래스 안에서 특정기능을 수행하기 위해 코드들을 따로 하나의 블록으로 묶어 놓은 집합을 말한다.

 

메서드는 크게 선언부와 실행영역으로 구성되어 있다.

  • 접근 제한자 : 변수와 마찬가지로 해당 메서드에 접근 할 수 있는 범위를 결정한다.
  • 반환타입 (return type) : 메서드를 호출하면 메서드는 블록 안에 있는 코드들을 실행한 후 결과 값을 반환하는데 , 어떤 타입으로 변환 할 것인지 타입을 미리 정해 줍니다. 반환값이 없는 경우에는 반환 타입으로 'void'를 사용한다.
  • 메서드이름 : 변수처럼 이름을 가지고 메서드를 호출할때 사용한다.

 

메서드 호출

메서드가 있는 클래스 참조변수  = new 클래스 ();
참조변수.메서드이름();
(단, 같은 클래스에 있는 메서드를 호출 할 때는 메서드 이름만 호출합니다.)

Book b = new Book();
b.read();
 

 

매개변수

: 특정기능을 수행하기 위한 메서드는 기능을 수행할때 사용할 인수를 받을 수 있는데 그 인수를 "매개변수" 라고 한다. 매개변수는 개수의 제한이 없다. 2개 이상의 매개변수 정의시 콤마(,)를 붙인다. 매개변수에 배열도 들어갈수 있다.

 
사진 삭제

사진 설명을 입력하세요.

return

: 메서드를 호출할때 매개변수를 전달 해준 것처럼, 필요에 따라 메서드로 부터 실행한 결과값을 되돌려 받을 수도 있다 . 우리는 이것을 "리턴값( return value)" 이라고 부른다. 메서드가 반환할 값이 있다면 반드시 return 구문을 통해서 결과값을 반환 해주고 메서드를 종료해야 한다. 만약 return 문이 없으면 컴파일 에러가 발생한다.

메서드를 종료하기 위해서 반환값이 없는 return 문을 사용할수도 있다 ! while문을 빠져나갈때 break를 사용했던것 처럼, 메서드를 빠져나가기 위해 return 을 사용한다 .

 

getter, setter 메서드

 

  • setter 메서드 : 필드에 값을 저장하기 전에 검증을 먼저 할 수 있는데 이러한 메서드를 'setter' 라고 부른다. 일반적으로 setter메서드를 사용할때는 , 필드의 값을 객체 외부에서 직접 넣지 못하도록 필드에 접근을 제한한다. 필드가 선언되어 있는 클래스에서만 접근 가능한 필드를 우리는 private 하다고 표현할 수 있으며, 필드를 private로 선언함 으로써 필드를 한층 더 보호하고, 외부에서 그 필드에 대한 값을 불러오는것도 불가능해진다.

 

  • getter 메서드 : private필드를 객체 외부에서 값을 불러오기 위해 구현하는 메서드를 'getter'라고 한다.private 필드는 객체 외부에서는 접근이 불가능 하지만, 필드가 선언된 클래스에서는 어디서든 접근 할 수있다. 따라서 메서드를 통해서 값을 전달 해 줄수 있다.

 

setter 와 getter를 구현하여 필드에 대한 접근 제한을 강화 해보자

package section02;

public class Person {
	private int age; // Person 클래스에서만 접근 가능한 age 필드 선언

	void setAge(int num) {
		if (num <= 0) { // 만약, age에 넣으려는 값이 0 보다 작거나 같다면,
			// 값이 잘못되었을을 출력하여 알려줌
			System.out.println("잘못된 수를 입력하셨습니다. 1이상의 값으로 설정하세요");
			return; // 메서드 종료
		} else {
			age = num; // age필드에 num값 저장
		}
	}

	int getAge() {
		return age;
	}
}

public class Test01 {

	public static void main(String[] args) {

		Person kim = new Person();
		kim.setAge(-30);
		kim.setAge(30);
		System.out.println("kim의 나이는" + kim.getAge() + "세입니다.");
	}
}
 

 

 

728x90
반응형