[Java] Method / 반환형(return) / 매개변수(parameter)

이승우·2023년 7월 12일

JAVA

목록 보기
13/14
post-thumbnail

▣ Method

  • 업무를 구분하여 작성할 때 사용

  • 중복코드를 최소화 할 수 있다.

  • instance method, static method 2가지

  • Polymorphism 지원

⇒ method Overload / method Override

접근지정자 반환형 method명 (매개변수 ...) {

 업무구현

}

-method는 호출하여 일을 수행하고, 반환형으로 처리한 결과를 받는다.

호출)

//반환형이 없을 때 - void

metohd명 (값);

//반환형이 있을 때 - return값을 받음

데이터형 변수명 = method명 (값);


● Method의 access modifier (접근지정자)

< 폴더개념 >

  • public : 클래스 외부에서 호출 가능

  • protected : 같은 패키지의 다른 클래스에서는 호출 가능, 패키지가 다르면 상속관계의 자식클래스에서만 호출 가능

  • private : 클래스 안에서만 호출 가능

  • default : 같은 패키지의 다른 클래스에서 호출 가능

    < 메모리개념 >

  • static : static method로 만들 때

  • final : Override를 막을 때

  • synchronized : multi thread에서 동시호출을 막을 때

● 반환형(return type)

  • method 안에서 업무 처리한 결과를 밖으로 내보낼 때 사용

  • method를 호출한 곳에서 결과 값을 받을수 있다.

  • void : 반환값 없음

    ⇒ 기본형데이터형과 참조형데이터형을 설정할 수 있다.

● 매개변수(parameter)

  • method 외부에 존재하는 값(arguments)을 method 내부로 전달하기 위한 변수

  • method를 호출할 때 매개변수의 개수와 형에 대해 일치하여 호출


■ instance method

  • 클래스의 인스턴스 변수를 사용하여 일을 처리하는 method

  • 객체화 하여 다음와 같이 호출

    객체명.method명();

▶ 실습 - instance method의 사용

package day0616;

/**
 * instance method : instance variable을 사용하여 업무를 처리하는 일
 * 
 * @author user
 */
public class UseInstanceMethod {
	int age;

	/**
	 * 나이를 넣으면 태어난 해를 출력해주는 일
	 */

	public void printBirth() {
		if (age > -1) {
			System.out.println(age + "살은" + (2023 - age));
		} else {
			System.out.println(age + "살은 잘못된 나이입니다.");
		} // end else
	} // printBirth

	public static void main(String[] args) {
		// printBirth(); //static 영역에서는 instance영역의 method를 직접 호출할 수 없다.
		// 2.객체화 : 클래스명 객체명=new 클래스명();
		UseInstanceMethod uim = new UseInstanceMethod();
		// instance 변수에 값을 할당
		uim.age = 26;
		// 4.method 호출
		uim.printBirth();

	}

}

▶실행결과
26살은1997


■ static method

  • 객체가 가지고있는 값을 사용하여 일처리를 하는 게 아니라, 매개변수로 입력된 값을 가지고 일시적인 연산을 할 때 사용

  • 객체화 하지않고 다음과 같이 호출

    클래스명.method 명();

▶ 실습 - static method의 사용

package day0616;

/**
 * static method : instance variable의 값을 사용하지 않고, 입력된 값으로만 업무처리할 때.
 * 
 * @author user
 */
public class UseStaticMethod {

	public static void printHelloMsg() {
		System.out.println("안녕하세요? 오늘은 금요일입니다.");
		System.out.println("내일은 쉽니다. 포항항항항^o^");
	}

	public static void main(String[] args) {
		// static method는 객체화 없이 클래스명.method명으로 호출한다.
		UseStaticMethod.printHelloMsg();
	}

}

▶실행결과
안녕하세요? 오늘은 금요일입니다.
내일은 쉽니다. 포항항항항^o^


● method 호출 방법 정리

class Test {

   public void methodA() {
   
   } 
   
   public static void methodB() {

   } 
} //Test class


// instance method 호출
//객체화

   Test t = new Test();

//호출 - 객체명.method명();

   t.methodA();

//static method 호출
//호출 - 클래스명.method명();

   Test.methodB();

▣ method의 4가지 형태

■ 반환형 없고, 매개변수 없는 형 ⇒ 고정 일

public void typeA() {

...

} //호출한 곳으로 돌아가라는 의미

호출) 객체명.method명();

객체명.typeA();

■ 반환형 없고, 매개변수 있는 형 ⇒ 가변 일

public void typeB(int i, char c) {

...

}

호출) 객체명.method명(값...)

객체명.typeB(30, 'A');

※ method가 반환형을 가지고 있다면

가장 마지막 줄에 return 값 정의

■ 반환형 있고, 매개변수 없는 형 ⇒ 고정 값

public int typeC() {

...

return 30;

}

호출) 데이터형 변수명 = 객체명.method명();

int i = 객체명.typeC(); //i=30

■ 반환형 있고, 매개변수 있는 형 ⇒ 가변 값

public int typeD(char c) {

...

return (int)c;

}

호출) 데이터형 변수명 = 객체명.method명(값...);

int value = 객체명.typeD('A'); //value=65


▶ 실습 - method 4가지 type

package day0616;

/**
 * method의 4가지 형태
 * 
 * @author user
 */
public class MethodTypes {
	/**
	 * 반환 값 없고, 매개변수 없는 형
	 */
	public void typeA() {
		System.out.println("고정적인 일");
	} // typeA

	/**
	 * 반환 값없고, 매개변수 있는 형 - 가변적인 일
	 * 
	 * @param i 매개변수
	 */
	public void typeB(int i) {
		System.out.println("가변적일 일" + i);
	} // typeB

	/**
	 * 반환형 있고, 매개변수 없는 형 - 고정 값
	 * 
	 * @return 정수형의 값
	 */
	public int typeC() {
		int i = 6;
		return i * 2;
	}

	/**
	 * 반환형 있고, 매개변수 있는 형 - 가변 값
	 * 
	 * @param d 입력 값
	 * @return 반환값
	 */
	public int typeD(double d) {

		return (int) d;
	}

	
	public static void main(String[] args) {
		// 객체화 : 클래스명 객체명 = new 클래스명
		MethodTypes mt = new MethodTypes();
		for (int i = 0; i < 10; i++) {
			mt.typeA();
			mt.typeB(i);
		}

		int i = mt.typeC();
		System.out.println("고정 값 : " + i);
		System.out.println("고정 값 : " + (mt.typeC() + 5));

		i = mt.typeD(6.16);
		System.out.println("가변 값 : " + i);

		System.out.println("가변 값 : " + mt.typeD(2023.6));

	} // main

} // class

▶실행결과
고정적인 일
가변적일 일0
고정적인 일
가변적일 일1
고정적인 일
가변적일 일2
고정적인 일
가변적일 일3
고정적인 일
가변적일 일4
고정적인 일
가변적일 일5
고정적인 일
가변적일 일6
고정적인 일
가변적일 일7
고정적인 일
가변적일 일8
고정적인 일
가변적일 일9
고정 값 : 12
고정 값 : 17
가변 값 : 6
가변 값 : 2023

profile
🧑🏻‍💻

0개의 댓글