.
이전 시간에 배운 내용을 복기해보면, 메소드는 파이썬의 함수처럼 기능과 행위를 의미합니다.
메소드는 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);
}
}
[출처]
- https://stackoverflow.com/questions/11993077/difference-between-static-methods-and-instance-methods
- https://www.geeksforgeeks.org/difference-between-static-and-non-static-method-in-java/ (추천 ★ ★ ★)
'Spring' 카테고리의 다른 글
객체지향 설계 원칙 5가지 - SOLID (0) | 2023.11.13 |
---|---|
static 메소드와 instance 메소드의 메모리 생성 시점이 다르다? (0) | 2023.11.08 |
자바 클래스 기본 구조와 용어 (0) | 2023.11.07 |
STEP3 회원 리포지토리 메모리 구현체 생성 (0) | 2023.11.06 |
STEP2 회원 리포지토리 인터페이스 생성 (0) | 2023.11.06 |