언어(Programming Language)/Java

[Java] Class Method 사용법

RyanSin 2021. 1. 24. 19:59
반응형

- 지난 시간

안녕하세요. 지난 시간에는 Java Class에 대해 알아봤습니다.

 

혹시 놓치고 오신 분들은 아래 링크를 통해 학습하고 오시는 걸 추천드립니다... :) Class를 잘 알지 못하면 메서드를 잘 이해할 수 없습니다.

any-ting.tistory.com/29

 

[Java] Class 개념 및 사용법

- 개요 안녕하세요. 이번 시간에는 자바에서 제일 어려운 개념인... Class(클래스)에 대해 알아보겠습니다. 일단 Class란 무엇일까요?? 딱 머릿속에 생각나는 게 없네요... 등급인가?... 반인가?... 학

any-ting.tistory.com

- 개요

이번 시간에는 클래스 메서드에 기본 구조와 방식에 대해 알아보겠습니다.

 

- Method 기본 구조

package com.company;

// 사람 클래스
public class Person {
     
    /**
     * @author Ryan
     * @description 공격 메서드
     *  public 접근 제어자 (해당 메서드를 호출권한 설정)
     *  int return 타입 설정 (다른 자료형을 선언해도 됩니다)
     *  attack 메서드 명
     *
     * attack(String type, int hp) : 파라미터1, 파라미터2스
     *
     * @param {String} type // 공격 타입
     * @param {String} hp // 상대방 hp
     * @return {int} int // 상대방 hp
     */
    public int attack(String type, int hp){

        if(type == "오른손") {

            hp += -10;

        }else if(type == "왼손") {

            hp += -5;

        }

        return hp;
    }
}

package com.company;

public class Main {

    public static void main(String[] args) {

        //몬스터 체력
        int monsterHP = 100;
        
        //사람 클래스를 생성합니다.
        Person person = new Person();

        System.out.println("공격 전 몬스터 체력 : "+ monsterHP);

        /*
          사람 클래스에서 attack 메서드를 호출 합니다.
          호출 할때 우리가 작성한 파라미터 값 두 개를 넣어줍니다.
          
          그리고 반환 값 타입은 int 타입이기 때문에 int 변수에 새롭게 할당합니다.
        */
        monsterHP =  person.attack("오른손", monsterHP);

        System.out.println("공격 후 몬스터 체력 : "+ monsterHP);


    }
}


//실행 결과 콘솔 값
공격 전 몬스터 체력 : 100
공격 후 몬스터 체력 : 90

 

메서드는 Class안에서 선언이 가능하다. 메서드만 따로 선언은 불가능하며 클래스에 대한 개념을 잘 알아야 합니다.

 

메서드 기본 구조는 아래와 같습니다.

"접근제어자 = public, 리턴 타입 = int, 메서드 명 = attack, 파라미터 = (String type, int hp), 리턴 값 = return hp;"

 

주석에 설명을 자세히 적어놨습니다. 직접 코드를 작성해보세요. :) 실습이 답입니다. 

 

- Method의 4가지 사용 방식 

 

  1. 전달 값이 있고, 반환 값이 있는 메서드 (전달 O, 반환 O)
  2. 전달 값이 없고, 반환 값이 없는 메서드 (전달 X, 반환 X)
  3. 전달 값은 있고, 반환 값은 없는 메서드 (전달 O, 반환 X)
  4. 전달 값은 없고, 반환 값이 있는 메서드 (전달 X, 반환 O)

 

1. 전달 O, 반환 O

    /**
     * @author Ryan
     * @description 공격 메서드 (전달 O, 반환 O)
     *  public 접근 제어자 (해당 메서드를 호출권한 설정)
     *  int return 타입 설정 (다른 자료형을 선언해도 됩니다)
     *  attack 메서드 명
     *
     * attack(String type, int hp) : 파라미터1, 파라미터2스
     *
     * @param {String} type // 공격 타입
     * @param {String} hp // 상대방 hp
     * @return {int} int // 상대방 hp
     */
    public int attack(String type, int hp){

        if(type == "오른손") {

            hp += -10;

        }else if(type == "왼손") {

            hp += -5;

        }
        return hp;
    }

처음 작성했던 메서드가 전달 값이 있고, 반환 값이 있는 메서드입니다.

 

2. 전달 X, 반환 X

package com.company;

// 사람 클래스
public class Person {

    private int HP = 100;
    
    /**
     * @author Rayn
     * @description 잠자기 메서드 (전달 X, 반환 X)
     *  
     */
    public void sleep(){

        if(this.HP == 100) {
            System.out.println("체력이 100입니다.");
        }else {
            //체력 10 회복
            this.HP += 10;
        }
    }
}

package com.company;

public class Main {

    public static void main(String[] args) {

        //사람 클래스를 생성합니다.
        Person person = new Person();

        // 잠자기 메서드 실행
        person.sleep();

    }
}

//실행 결과 콘솔화면
체력이 100입니다.

처음에 작성했던 코드를 보면 반환 타입이 있습니다. (int 자료형) 

 

하지만 여기서는 void를 작성했습니다. void는 "공백이라는 뜻"입니다. 즉 "반환을 안 하겠다", "반환 값이 없다"라는 뜻입니다.

 

그렇다면 sleep 메서드는 전달과 반환 값이 없는 메서드입니다.

 

3. 전달 O, 반환 X

package com.company;

import java.util.ArrayList;

// 사람 클래스
public class Person {

    private ArrayList<String> Items = new ArrayList<>();
    /**
     * @author Rayn
     * @description 아이템 등록 메서드 (전달 O, 반환 X)
     *  
     */
    public void addItem(String item){

        this.Items.add(item);// 아이템 추가

        for(String items : Items){

            System.out.println(items); // 결과 확인
        }

    }
}


package com.company;

public class Main {

    public static void main(String[] args) {

        //사람 클래스를 생성합니다.
        Person person = new Person();

        //아이템 등록 메서드
        person.addItem("사과");

    }
}

//실행 결과 콘솔화면
사과

"사과"라는 아이템을 addItem 메서드를 통해 전달하고 해당 사과 아이템을 ArrayList에 추가하고 데이터를 출력해봤습니다.

 

4. 전달 X, 반환 O

package com.company;

// 사람 클래스
public class Person {

    public int MP = 100;// 사람 마력

    /**
     * @author Ryan
     * @description 마법 공격 메서드 (전달 X, 반환 O)
     *
     * @return {int} //마법 공격 반환
     */
    public int magicAttack(){

        //마나가 없다면 마법공격 할수 없다.
       if(MP == 0){
            System.out.println("마나를 회복해주세요.");
            return 0;
       }

       //마나 감소
       this.MP -= 10;

       System.out.println("현재 마나 : "+this.MP);


       return 10;
    }
}

package com.company;

public class Main {

    public static void main(String[] args) {

        int monsterHP = 100;

        //사람 클래스를 생성합니다.
        Person person = new Person();

        //마법 공격 호출 후 반환되는 데이터를 int 자료형으로 받는다.
        int magicAttack = person.magicAttack();

        //몬스터 체력을 깎는다.
        monsterHP -= magicAttack;

        System.out.println("몬스터 체력 : "+monsterHP);
    }
}

//실행 결과 콘솔화면
현재 마나 : 90
몬스터 체력 : 90

마법 공격을 실행하고 마나가 있다면 10이라는 데이터를 반환했습니다.

 

자바 클래스에서 메서드를 사용하는 방식을 알아봤습니다.

 

이해가 안 가시는 분들은 댓글을 남겨주세요!. 감사합니다. :)