코딩/JAVA

JAVA 메서드(method)의 이해와 활용

LoGinShin 2024. 2. 5. 20:13
반응형

 

 

프로그래밍을 공부하다 보면 함수라는 단어를 많이 들어보셨을 겁니다. 자바에서는 이 '함수'를 '메서드'라고 부릅니다.

메서드는 프로그램의 기능을 구현하는데 이어 핵심적인 역할을 하는데요, 자바에서는 메서드를 크게 두 가지 형태로 구분할 수 있습니다. 하나는 '인스턴스 메서드(instance method)'dlrh, 다른 하나는 '정적 메서드(static method)'입니다.

 

 

 

1. 인스턴스 메서드

인스턴스 메서드는 객체마다 독립적으로 존재하는 메서드입니다. 이 메서드는 'this' 키워드를 가지고 있으며, 객체가 생성된 후에만 사용 가능합니다. 또한 이 메서드는 필드를 외부에서 사용할 수 있습니다.

자바에서 흔히 일반적으로 정의하고 사용하는 메서드이다.

 

public class MyClass{

	private String name;
    
    public MyClass(String name){
    	this.name = name;
    }

    public void instanceMethodVoid(String name)
    {
     // code
    }

    public int instanceMethodInt(String name)
    {
     // code

     return 0;
    }

    public String instanceMethodString(String name)
    {
     // code

     return "";
    }

    //...

}

 

 

이 코드에서 'instanceMethodInt' 메서드는 'MyClass'의 인스턴스에서만 호출할 수 있습니다. 이 메서드는 'this.name'의 길이를 반환하는데, 여기서 'this'는 메서드를 호출한 객체를 참조합니다. 아래와 같이 인스턴스를 생성하고 메서드를 호출할 수 있습니다.

 

MyClass callInstance = new MyClass("helloWorld");
int nameLength = myInstance.instanceMethodInt();

이렇게 인스턴스 메서드는 특정 객체에 대한 동작을 정의하며, 객체의 상태를 읽거나 변경하는 데 사용됩니다. 객체 지향 프로그래밍에서는 이러한 인스턴스 메서드를 통해 객체의 행동을 캡슐화하고, 객체 간의 상호작용을 구현합니다.

 

 

 

 

2. 정적 메서드

정적 메서드는 모든 객체가 공유하는 메서드입니다. 이 메서드는 'this' 키워드를 가지고 있지 않으며, 객체의 생성과 상관없이 메모리에 생성됩니다. 예를 들어, System.out.println 메서드는 정적 메서드의 예입니다.

 

인스턴스 메서드와 다르게 클래스로 객체를 생성하지 않아도 호출이 가능한 메서드입니다.

이 메서드는 클래스에 소속되어 있어서 특정 인스턴스에는 속해있지 않습니다. 이 때문에 정적 메서드 내부에서는 인스턴스 변수나 인스턴스 메서드에 직접 접근할 수 없습니다.

정적 메서드는 'static' 키워드를 사용해서 선언하며, 메서드 앞에 'static'을 붙여서 정의합니다. 예를 들어 

    public class MyClass{
        public static void staticMethod() {
            // code
        }
    }

 

 

이렇게 선언된 정적 메서드는 객체를 생성하지 않고 클래스 이름을 통해 바로 호출할 수 있습니다.

MyClass.staticMethod();

 

 

 

 

 

정적 메서드는 주로 유틸리티나 헬퍼 메서드를 작성할 때 사용됩니다. 예를 들어, 수학 계산을 위한 Math 클래스의 pow 메서드, sqrt 메서드 등이 정적 메써드입낟. 이와 같은 메서드를 특정 객체의 상태와는 무관하게 동작하므로, 정적 메서드로 선언되어 있습니다.

또한, 메인 메서드(main method) 역시 정적 메서드입니다. 자바 프로그램이 실행될 때 가장 먼저 호출되는 메서드가 바로 메인 메서드입니다.

 

public void static main(String[] args){
	// main code ...

}

 

 

이 메서드는 프로그램 실행 시 JVM(Java Virtual Machine)에 의해 자동으로 호출됩니다. 객체를 생성하지 않고도 호출되어야 하므로, 메인 메서드는 정적 메서드로 선언되어 있습니다.

 

정적 메서드는 편리하게 사용할 수 있지만, 오용하면 프로그램의 구조를 혼란스럽게 만들 수 있습니다. 정적 메서드는 객체 지향 프로그래밍의 원칙에 어긋나는 경우가 많으므로, 필요한 경우가 아니라면 인스턴스 메서드를 사용하는 것이 대부분 좋습니다.

 

 

728x90
반응형