로그인 회원가입
모두인포
전체IT경제사회생활스포츠시사여행연애

자바 클래스 멤버와 인스턴스 멤버

lmkfox · 2025-07-11 · 조회 0
자바 클래스 멤버와 인스턴스 멤버
1. 클래스 멤버 (Class Member) 정의 - static 키워드로 선언된 필드와 메소드를 의미 - 클래스가 메모리에 로딩될 때 자동으로 생성 - 모든 객체가 공유함 - 객체 생성 없이 사용 가능 구성 요소 - 클래스 변수 (Static Field) - 클래스 메소드 (Static Method) 예시 public class Car { static int totalCars = 0; // 클래스 변수 static void showTotalCars() { // 클래스 메소드 System.out.println("전체 자동차 수: " + totalCars); } } 사용 예 Car.totalCars = 5; Car.showTotalCars(); // 전체 자동차 수: 5 - 클래스 이름으로 직접 접근 - 인스턴스 없이 사용 가능 2. 인스턴스 멤버 (Instance Member) 정의 - static 없이 선언된 필드와 메소드 - 객체가 생성될 때마다 별도로 메모리에 생성 - 객체마다 독립적인 값과 동작을 가짐 - 객체를 통해서만 접근 가능 구성 요소 - 인스턴스 변수 (Field) - 인스턴스 메소드 예시 public class Car { String model; // 인스턴스 변수 void drive() { // 인스턴스 메소드 System.out.println(model + "가 운행됩니다"); } } 사용 예 Car myCar = new Car(); myCar.model = "소나타"; myCar.drive(); // 소나타가 운행됩니다 - 객체를 생성하고 그 참조변수를 통해 접근 3. 클래스 멤버 vs 인스턴스 멤버 비교 구분 클래스 멤버 인스턴스 멤버 키워드 static 없음 생성 시점 클래스 로딩 시 객체 생성 시 접근 방법 클래스명.변수 또는 메소드 객체명.변수 또는 메소드 메모리 클래스당 1개 객체당 각각 생성 공유 여부 모든 객체가 공유 각 객체가 독립적으로 소유 사용 예 Math.pow(), System.out 등 String.length(), 사용자 정의 등 4. 혼합 사용 예시 public class Counter { static int count = 0; // 클래스 변수 int id; // 인스턴스 변수 public Counter() { count++; id = count; } void printInfo() { System.out.println("ID: " + id + ", Total: " + count); } static void printTotal() { System.out.println("총 객체 수: " + count); } } public class Main { public static void main(String[] args) { Counter c1 = new Counter(); Counter c2 = new Counter(); c1.printInfo(); // ID: 1, Total: 2 c2.printInfo(); // ID: 2, Total: 2 Counter.printTotal(); // 총 객체 수: 2 } } 5. 주의 사항 - 클래스 메소드에서는 인스턴스 멤버에 직접 접근할 수 없음 public class Test { int number = 10; static void show() { // System.out.println(number); // 오류: static 메소드에서 인스턴스 변수 접근 불가 } } - 인스턴스 멤버를 사용하려면 객체를 생성하고 접근해야 함 6. 결론 요약 항목 클래스 멤버 인스턴스 멤버 키워드 static 없음 접근 방식 클래스명으로 직접 접근 객체를 통해 접근 메모리 구조 클래스당 하나 공유 객체별로 각각 존재 대표적 사용 예 상수, 공용 기능 (Math, System) 등 객체 고유의 속성이나 동작

댓글

아직 댓글이 없습니다.

로그인 후 댓글을 남길 수 있습니다.