Spring

클래스 메소드 vs 인스턴스 메소드 단순 코드 비교

chandlerxx 2023. 11. 8. 11:28

자바 클래스 기본 구조와 용어

.

 

이전 시간에 배운 내용을 복기해보면, 메소드는 파이썬의 함수처럼 기능과 행위를 의미합니다.

메소드는 static 유무에 따라 나뉘는데요. 살펴보겠습니다.

 

1. 클래스 메소드(Static Methods)


  • 메소드 생성시 static이 붙은 메소드
  • 메소드 호출 전 해당 클래스의 인스턴스를 생성할 필요가 없다. (객체 생성 X) 
  • 'Class명.메소드' 로 사용하면 된다.
  • 장점 : 메모리 loss를 줄일 수 있고 과부하 방지

For example : Math.abs(-5); or Member.get()
// API 문서 : https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html

 

 

2. 인스턴스 메소드(Instance Methods)


  • 메소드 생성시 static이 붙지 않은 메소드
  • 메소드 호출 전 해당 클래스의 인스턴스를 생성해야 합니다. 
  • 'member(참조변수).메소드' 로 사용하면 된다.

For example :
Member member = new Member();
member.getMail(); 

 

 

3. 두수의 합을 구하는 코드 (각 메소드 비교)


 

public class AddNumber {

    // 필드
    int num1;
    int num2;

    // 생성자
    public void setParameters(int num1, int num2) {
        this.num1 = num1;
        this.num2 = num2;
    }

    // Instance Method
    public int add() { // wo static
        return this.num1 + this.num2;
    }

    // Class Method
    public static int returnSum(int a, int b) { // with static
        return (a + b);
    }
}

 

 

Tester

public class AddNumberTest {
    public static void main(String[] args) {

        // 인스턴스 메소드 호출
        // 1. 인스턴스 생성
        AddNumber addNumber = new AddNumber();

        // 2. 참조변수.메소드
        // 파라미터를 받아서 객체 값 할당
        addNumber.setParameters(10, 20);

        // 3. 참조변수.메소드
        // 두수의 합
        int result1 = addNumber.add();
        System.out.println("인스턴스 메소드 합: " + result1);

        // 클래스 메소드 호출
        // 1. class명.메소드 (인스턴스를 생성할 필요가 없다)
        int result2 = AddNumber.returnSum(50, 30);
        System.out.println("클래스 메소드 합 :" + result2);
    }
}

 

출력

 

 


[출처]