인스턴스 메서드 (Instance Method)란❓
인스턴스 메서드는 클래스의 객체를 생성한 후에 호출할 수 있는 메서드입니다. 주로 객체의 상태를 참조하거나 변경하기 위해 사용됩니다.
인스턴스 메서드의 특징
1. 객체 생성 후 호출 가능
- 반드시 객체를 통해 호출해야 합니다.
2. 인스턴스 변수와 메서드에 접근 가능
- 객체의 상태(필드)와 다른 인스턴스 메서드를 직접 사용할 수 있습니다.
3. 객체마다 동작이 다를 수 있음
- 각 객체의 상태에 따라 실행 결과가 달라질 수 있습니다.
public class User {
private String username;
private String email;
public User(String username, String email) {
this.username = username;
this.email = email;
}
// 인스턴스 메서드
public String getUserInfo() {
return "Username: " + username + ", Email: " + email;
}
public void setEmail(String email) {
this.email = email;
}
}
public class Main {
public static void main(String[] args) {
User user = new User("JohnDoe", "john@example.com");
System.out.println(user.getUserInfo()); // 객체의 상태 출력
user.setEmail("new@example.com"); // 객체 상태 변경
System.out.println(user.getUserInfo());
}
}
위 코드에서 getUserInfo() 메서드는 인스턴스 메서드입니다. 해당 인스턴스 메서드는 객체의 상태(필드)를 참조하여 동작을 수행하며, username과 email 필드를 사용해 사용자 정보를 문자열로 구성하여 반환합니다.
이를 통해 각 객체는 고유한 정보를 제공할 수 있으며, 객체 상태에 따라 반환 결과가 달라질 수 있습니다.
이처럼 getUserInfo()는 객체의 동적인 상태를 기반으로 동작하는 인스턴스 메서드의 대표적인 사례입니다.
정적 메서드 (Static Method)란❓
정적 메서드는 클래스에 속하며, 객체 생성 없이 호출할 수 있는 메서드입니다. 보통 상태와 무관한 공통 로직을 처리할 때 사용됩니다.
정적 메서드의 특징
1. 클래스를 통해 직접 호출 가능
객체 생성없이 호출 가능합니다.
2. 객체의 상태에 접근 불가
- 인스턴스 변수나 메서드에 접근할 수 없습니다.
3. 정적 필드 및 메서드만 사용 가능
- 정적 필드와 메서드에 의존합니다.
4. 전역적으로 사용 가능한 로직에 적합
- 특정 객체와 상관없이 동작해야 하는 로직에서 활용됩니다.
public class MathUtils {
// 정적 메서드
public static int add(int a, int b) {
return a + b;
}
public static int multiply(int a, int b) {
return a * b;
}
}
public class Main {
public static void main(String[] args) {
int sum = MathUtils.add(5, 10); // 클래스 이름으로 직접 호출
int product = MathUtils.multiply(5, 10);
System.out.println("Sum: " + sum);
System.out.println("Product: " + product);
}
}
위 코드에서 add()와 multiply()는 정적 메서드로, 특정 객체의 상태와 무관하게 동작합니다.
클래스 이름인 MathUtils로 직접 호출할 수 있으며, 객체를 생성하지 않아도 사용할 수 있다는 점이 특징입니다.
이러한 메서드는 인스턴스 필드에 접근하지 않고 전달된 매개변수만을 사용하여 연산을 수행하므로, 수학 연산처럼 공통적으로 사용되는 유틸리티성 로직에 적합합니다.
이처럼 전역적이고 객체의 상태에 의존하지 않는 동작에 활용됩니다.
'TIL,일일 회고' 카테고리의 다른 글
[TIL, 일일 회고] 2024.12.27 - Docker : stdin 연결을 위한 인터랙티브 모드(-it) (1) | 2024.12.27 |
---|---|
[TIL, 일일 회고] 2024.12.26 - 실시간 컨테이너 모니터링: attach와 logs -f 차이점 (0) | 2024.12.26 |
[TIL, 일일 회고] 2024.12.24 - IntelliJ의 Code Insight 기능이란? (0) | 2024.12.24 |
[TIL, 일일 회고] 2024.12.23 - IntelliJ 점(.)으로 구분되는 디렉토리 구조 계층으로 변경하기 (0) | 2024.12.23 |
[TIL, 일일 회고] 2024.12.22 - 메타문자란 무엇일까❓ (0) | 2024.12.22 |