자바에서는 클래스 내부에 선언된 멤버를 인스턴스 멤버(non-static member)와 클래스 멤버(static member)로 구분합니다. 이 둘의 차이점은 다음과 같습니다.
1.인스턴스 멤버
- 객체 생성 후 인스턴스 멤버에 접근할 수 있습니다.
- 인스턴스 멤버는 객체마다 독립적으로 존재하며, 객체가 생성될 때마다 새로운 인스턴스 멤버가 생성됩니다.
- 인스턴스 변수, 인스턴스 메서드, 인스턴스 초기화 블록 등이 인스턴스 멤버에 해당됩니다.
예시:
public class Person {
private String name; // 인스턴스 변수
public void setName(String name) { // 인스턴스 메서드
this.name = name;
}
}
Person person1 = new Person();
person1.setName("Alice"); // 인스턴스 멤버에 접근하여 값 설정
Person person2 = new Person();
person2.setName("Bob"); // 다른 인스턴스 멤버에 값 설정
2.클래스 멤버
- 클래스 이름으로 바로 접근할 수 있습니다. 즉, 객체 생성 없이 클래스 이름만으로 접근 가능합니다.
- 클래스 멤버는 클래스가 메모리에 로드될 때 생성되며, 모든 객체에서 공유합니다.
- 클래스 변수, 클래스 메서드, 정적 초기화 블록 등이 클래스 멤버에 해당됩니다.
예시:
public class Calculator {
public static final double PI = 3.14; // 클래스 변수
public static int add(int a, int b) { // 클래스 메서드
return a + b;
}
}
double piValue = Calculator.PI; // 클래스 변수에 접근하여 값 가져오기
int result = Calculator.add(3, 4); // 클래스 메서드에 접근하여 연산 수행
즉, 인스턴스 멤버는 객체마다 독립적으로 존재하며, 객체가 생성될 때마다 새로운 인스턴스 멤버가 생성되지만, 클래스 멤버는 클래스가 메모리에 로드될 때 생성되며, 모든 객체에서 공유됩니다. 이러한 차이점으로 인해, 인스턴스 멤버는 객체의 특정한 상태나 행위를 표현할 때 사용하고, 클래스 멤버는 객체와 무관한 공통적인 상태나 행위를 표현할 때 사용합니다.
*멤버(member)란 클래스 내부에 선언된 변수와 메서드를 의미합니다.
'java(자바)' 카테고리의 다른 글
[java(자바)] 다형성 _디버깅의 눈물 (0) | 2023.02.24 |
---|---|
[java(자바)] 상속 관계, 포함 관계(is-a, has-a) _디버깅의 눈물 (0) | 2023.02.24 |
[java(자바)] 2차원 배열 정렬하기 Comparator, 람다식 _디버깅의 눈물 (0) | 2022.10.20 |
[java(자바)] treeSet 오름차순 정렬하기 Collections.reverseOrder() _디버깅의 눈물 (1) | 2022.10.05 |
[java(자바)] int 배열 내림차순 정렬하기(reverseOrder) _디버깅의 눈물 (0) | 2022.10.05 |