개요
특강을 들으면서, 강사님이 해주신 말씀 중에 클래스 메소드와 인스턴스 메소드의 차이를 알아두면 나중에 개발을 하게 될 때, 효율적으로 코드를 작성할 수 있다고 알아두라고 말씀해 주셨다.
전에도 차이가 궁금해서 정리해야지 했었는데, 이 부분을 강사님이 상기시켜 주셔서 꼭 공부하고야 말겠다 했던 것을 지금에서야 작성하려고 한다. (까먹기 전에 얼른 공부하고 기록해야지 안 그러면 평생 안 할거 같아서...)
클래스 메소드와 인스턴스 메소드
1. 클래스 메소드
흔히 알고 있는 static이 붙은 메소드
보통 메소드 중에서 인스턴스와 관계가 없는(인스턴스 변수 혹은 인스턴스 메소드를 사용하지 않는) 메소드를 클래스 메소드라고 한다.
특징
클래스 메소드는 인스턴스 변수를 사용할 수 없다.
-> 이도 그럴 것이 인스턴스 변수를 사용하기 위해선 인스턴스화를 시킨 객체가 존재해야 사용이 가능한데, 클래스 메소드는 클래스 변수를 제외하고는 아직 인스턴스화시킨 변수가 없다는 가정 하에 사용이 불가능하다.
2. 인스턴스 메소드
클래스 메소드와는 반대로 static이 붙지 않은 메소드
메소드의 작업을 수행하기 위해선 반드시 인스턴스화시킨 객체가 존재해야 한다.
특징
인스턴스 메소드는 인스턴스 변수를 포함하여 클래스 변수까지 즉, 멤버변수를 사용할 수 있다.
-> 인스턴스 메소드를 사용하기 위해선 클래스의 인스턴스화를 통한 인스턴스 변수를 선언해야 한다. 이렇게 인스턴스화를 진행시켰을 경우, 클래스 내의 모든 변수에 접근이 가능해지고, 인스턴스 메소드의 경우 클래스 변수, 인스턴스 변수 모두 사용이 가능해진다.
예제) 사칙연산을 통한 클래스 메소드와 인스턴스 메소드 활용
class ArithmeticOperations {
public int add(int a, int b) {
return a + b;
}
public int minus(int a, int b) {
return a - b;
}
public static int multiply(int a, int b) {
return a * b;
}
public static int divide(int a, int b) {
return a - b;
}
}
public class Result {
public static void main(String[] args) {
// 인스턴스화를 통한 ArithmeticOperations 객체 선언
ArithmeticOperations oper1 = new ArithmeticOperations();
System.out.println(oper1.add(3, 5));
ArithmeticOperations oper2 = new ArithmeticOperations();
System.out.println(oper2.minus(7, 2));
// 클래스 메소드의 경우 인스턴스화 없이 바로 사용이 가능
System.out.println(ArithmeticOperations.multiply(10, 4);
System.out.println(ArithmeticOperations.divide(12, 6);
}
}
결과
8
5
40
2
'Dev > Java' 카테고리의 다른 글
[Java] enum 매핑한 값 DB에 문자열로 저장하기 (0) | 2023.07.06 |
---|---|
[Java] 객체지향 설계원칙 - SOLID (0) | 2023.06.14 |
[Java] Java와 JVM (1) | 2023.06.05 |
[Java] 이차원 배열을 정렬하는 법 (0) | 2023.05.29 |
[Java] 추상 클래스와 인터페이스 (0) | 2023.05.26 |