Java | 객체지향문법(5) - 메소드에 관하여

heige·2023년 7월 19일

Java

목록 보기
5/21
post-thumbnail

메소드

메소드 선언 방법

아래 메소드 선언 방법은 꼭 외워두자.

[접근제한자] [static] 리턴type 메소드이름([매개변수, ...]) {
	실행문
 }

매개변수 : O, 반환값 : O

매개변수는 메소드에 전달하는 값이고, 반환값은 메소드가 외부로 반환(Return)하는 값을 의미한다.

들어갈 때 매개변수는 여러 개가 있을 수 있다. 정수 하나가 들어가서 정수가 나온다면 메소드 선언은 다음과 같이 한다.

public int method5(int x) {
...
}

public 다음의 int 는 리턴type을 말한다. 해당 메소드가 실행되면 int값이 리턴된다는 의미.

매개변수 : X, 반환값 : X

매개변수도 받지 않고, 리턴도 안 하는 메소드 정의이다.

public void method1() {
...
}

매개변수 : O, 반환값 : X

매개변수는 있지만 값을 리턴하지 않는 메소드 정의이다.

public void method2(int x) {
...

매개변수 : X, 반환값 : O

매개변수는 없고, 정수를 리턴하는 메소드 정의이다.

public int method3() {
...
}

블록 안에는 여러 줄의 실행문이 올 수 있고, 정수값을 리턴해야 한다.

매개변수 : 2개, 반환값 : X

정수값 2개를 매개변수로 받고, 리턴은 하지 않는 메소드 정의이다.

public void method4(int x, int y) {
...
}

▶️ 메소드는 0개 이상의 매개변수를 받아 들인 후, 코드를 실행하고 어떤 결과를 return 할 수 있고, return 하지 않을 수도 있다.

메소드 만들어보기(실습)

MathBean 클래스 정의

메소드 정의하는 방법을 실습 통해 알아보겠다. (자바는 기본적으로 Math 클래스를 제공하기 때문에 헷갈리지 않게 MathBean 클래스라는 이름을 지음.)

MathBean 클래스 작성

(./src 오른쪽 클릭 → new → class → MathBean 클래스 생성)

클래스 정의에 따라서 메소드를 작성하면 다음과 같다.


public class MathBean {
	public void printClassName() {
		System.out.println("MathBean");
	}
	public void printNumber(int num) {
		System.out.println(num);
	}
	public int getOne() {
		return 1;
	}
	public int plus(int x, int y) {
		return x + y;
	}
}

UML 표기법

MathBean 클래스를 UML 표기법으로 표현하면 다음과 같다.
+public이라는 의미이다.

자바 관련 도서를 보면 UML 표기법이 많이 나온다! 저자들이 클래스의 관계를 표현할 때 자주 이용한다. 그림만 봐도 어떤 코드로 작성해야 할지 알 수 있음.
프로그래밍을 하기 전에 그림으로 어떤 클래스 이름 사용할지, 어떤 메소드를 만들지 표현하는 습관을 가지는 게 좋다.

MathBean 클래스 사용하기

만들어둔 MathBean 클래스를 사용하려면 메모리에 올려야 한다. 메모리에 올리려면 new 연산자가 사용되어야 한다.
MathBean 클래스를 사용하는 MathBeanTest 클래스를 만든다.
(./src 오른쪽 클릭 → new → class → MathBeanTest 클래스 생성)

자바 애플리케이션이 실행되려면 main메소드가 있어야 한다.

Static한 메소드에 대해

다시 한 번 짚고 넘어가기!
static이 붙은 메소드는 해당 메소드를 가진 클래스가 인스턴스가 되지 않더라도 JVM(Java Virtual Machine)이 사용할 수 있다. main 메소드가 이에 해당된다.


public class MathBeanTest {
	public static void main(String[] args) {
		MathBean math = new MathBean();
	}`
}

MathBean이 가지고 있는 메소드를 사용하려면 MathBean 인스턴스를 생성해야 한다. 위와 같이 클래스를 작성하면 MathBean 인스턴스가 만들어지고, 메모리에 올라가게 된다.

c.f) MathBean 인스턴스는 Heap 메모리에 올라간다. 자바를 깊게 알려면 메모리 구조에 대해 잘 알아둬야 한다. JDK 버전에 따라 Heap 메모리 구조도 달라진다.

Heap 메모리에 만들어진 인스턴스를 참조변수 math가 가리킨다는 것만 알면 된다.
ex) 리모컨의 버튼을 누르면 실제 TV 인스턴스가 동작한다. 리모콘을 누르면, 리모콘이 레퍼런스(참조)하는 TV가 동작하는 것이다.

MathBean이라는 인스턴스가 만들어지는데, 이를 참조하는 변수가 math이다. math를 이용해서 MathBean 클래스의 메소드를 사용할 수 있다. math.getOne()을 하면 math가 참조하는 MathBean 인스턴스의 메소드가 실행된다.

⭐️ 항상 참조변수를 이용해서 인스턴스를 다룬다!

다음과 같이 printClassName() 메소드를 호출하고 실행해본다.

printNumber() 메소드를 호출하고 결과값을 확인해본다.

getOne() 메소드를 호출했을 때는 어떤 값을 반환하게 되는데, 반환값을 받을 변수를 만들어줘야 한다.(여기서는 x) 정수를 리턴하는 메소드이기 때문에 아래와 같이 작성한다.

plus()메소드를 호출했을 때 반환값을 받을 변수 sum을 만들고, 아래와 같이 작성 후 실행해본다.

MathBean 클래스를 만들고, 해당 클래스의 메소드를 사용하는 MathBeanTest 클래스를 작성해보았다.


오늘도 헤잇팅👊

🗒️ 본 게시물은 '인프런'의 <즐거운 자바>를 수강하며 기록한 개인 강의 노트입니다.

profile
웹 백엔드와 클라우드 정복을 위해 탄탄한 기반을 쌓아가고 있는 예비개발자입니다. 'IT You Up'은 'Eat You Up'이라는 표현에서 비롯되어, IT 지식을 끝까지 먹어치운다는 담고 있습니다.

1개의 댓글

comment-user-thumbnail
2023년 7월 19일

글 잘 봤습니다, 많은 도움이 되었습니다.

답글 달기