메서드(메소드)란 뭘까?

개발자 아블·2024년 3월 26일
0

앱개발 용어

목록 보기
5/15
post-thumbnail

메서드란?

메서드(method)란 객체 지향 프로그래밍에서 객체와 관련된 함수이자 클래스가 갖고 있는 기능이다.

이렇게 설명하면 이해가하기 어렵기 때문에 간단한 예시를 보겠다.

int add(int a, int b) {
    int c=a+b;
    return c;
    }

a와 b를 더하는 add라는 메서드를 정의 한 것이다.

위와 같이 메서드를 작성하여 사용하면 중복되는 코드의 반복적인 프로그래밍을 피할 수 있다.
또한, 모듈화로 인해 코드의 가독성도 좋아지며 손쉽게 유지보수 가능하다.

모듈화 간단 설명
기능적인 분리를 통해 코드 재사용성을 높여 소프트웨어 설계하는 기법

메서드의 종류

추상 메서드

구현 없이 선언만 되어 있는 메서드다.

abstract class Main{
	abstract int rectangle(int h, int w); // java 추상 메서드 사용 예시
}

위와 같이 구현이 안되어 있는 메서드는

public class Main2 extends Main{
	@Override
	int rectangle(int h, int w)
	{
		return h*w;
	}
}

오버라이드를 통해 구현해서 사용한다.

오버라이드 간단설명
오버라이드란 상속 관계인 부모 클래스와 자식 클래스 사이에서
부모 클래스의 메서드를 똑같이 가져와 사용하는 덮어씌우는 방법

상태변이 메서드

자신을 호출한 객체의 상태를 변화시킬 수 있는 메서드다.

struct calculator
{
	static int value;
	void increase()
	{
		value = value + 1;
	}
};

위 코드에서는 value의 값을 변경할 수 있는 increase가 메서드가 된다.
추상 메서드, 상태변이 메서드 참고 자료

접근자 메서드

객체 변수에 저장되어 있는 값을 알 수 있게 해주는 메서드다.
관례적으로 접근자 메서드의 이름은 get으로 시작한다.

변경자 메서드

객체 변수의 값을 바꾸는 메서드다.
관례적으로 변경자 메서드의 이름은 set으로 시작한다.

// 접근자 메서드와 변경자 메서드 Java 예시
import java.util.Scanner;
public class Student2 {
	private String name;
    
    // 접근자 메서드 
    public String getName()
    {
        return name;
    }
    
    // 변경자 메소드
    // 이름을 주어진 값을 변경함
    public void setName(String Name)
    {
        name = Name;
    }
}

접근자 메서드 getName()은 name을 반환해 객체 변수의 값을 알려주고
변경자 메서드인 setName(String Name)은 name에 넘겨 받은 매개변수 Name 값으로 변경해 준다.

// java getName(), setName(String Name) 사용 예시
public class Student2Driver {
    public static void main(String[] args) {
        // 첫 번째 학생을 나타내는 객체 생성
        Student2 stud1 = new Student2();
		// 두 번째 학생을 나타내는 객체 생성
        Student2 stud2 = new Student2();

        // 첫 번째 학생의 이름 정함
        stud1.setName("반석");
        // 두 번째 학생의 이름 정함
        stud2.setName("준형");
   }
}

위와 같이 사용 가능하다.
접근자 메서드, 변경자 메서드 참고 링크

인스턴스 메서드

인스턴스 간단설명
클래스에 소속된 개별적인 객체를 말한다.
jam 이라는 클래스를 정의하고 apple이라는 객체와 grape라는 객체를 생성할 경우
apple과 grape는 jam 클래스의 인스턴스가 된다.

클래스로 객체를 생성하고서 그 객체를 통해서만 호출할 수 있는 메서드다.
호출하기 위해서는 반드시 해당 메서드가 정의더이 있는 클래스의 객체를 먼저 생성해야 한다.

정적 메서드(static메서드 혹은 class메서드 라고도 불린다)

클래스로 객체를 생성하지 않아도 호출이 가능한 메서드다.
해당 메서드가 정의되어 있는 클래스의 이름이나 생성된 객체를 통해 호출할 수 있다.

// MyMath2.java
class MyMath2 {
      long a, b;

      long add() { //인스턴스 메서드
          retun a + b;
      }

      static long add(long a, long b) { // 정적 메서드
          return a + b;// a,b는 지역변수(Local Variable)
      }
  }
// MyMath2Test.java
class MyMath2Test {
      public static void main(String args[]){
          
          System.out.print(MyMath2.add(200L, 100L));// 정적 메서드 호출
          //정적 메서드는 객체 없이 호출 가능
          
          MyMath2 mm = new MyMath2(); //인스턴스 생성
          mm.a = 200L;
          mm.b = 100L;
          System.out.println(mm.add()); //인스턴스 메서드 호출
      }
  }

정적 메서드는 클래스로 객체를 생서하지 않고 MyMath2.add(200L, 100L)으로 사용된 반면,
인스턴스 메서드는 mm이라는 객체를 만들어야 사용 가능한 모습을 보인다.
인스턴스 메서드, 정적 메서드 참고 링크

0개의 댓글