java - 클래스변수, 인스턴스변수

imjingu·2023년 8월 15일
0

개발공부

목록 보기
369/481

인스턴스 변수는 각각의 인스턴스마다 고유의 저장공간을 가지고 있기 때문에 별개의 조정이 가능
클래스 변수는
1) 하나의 저장공간을 모든 인스턴스가 함께 공유하기 때문에 하나의 참조변수로 값을 변경하더라도 모든 인스턴스의 값이 변하게 됨
2) 인스턴스 생성전에 접근가능하기 하기 때문에 클래스 이름으로 접근이 됨

package chapter20230814;

class Cars {
	static int wheel = 4; // 클래스 변수
	int speed; // 인스턴스 변수
	// static 이 붙고 안붙고 차이
}
public class test02 {
	

	public static void main(String[] args) {
		System.out.println(Cars.wheel); // 클래스 이름으로 접근 가능
		// System.out.println(Cars.speed); // 에러 발생 인스턴스 변수는 클래스 이름으로 접근 불가
		
		Cars myCar1 = new Cars(); // 객체 생성
		
		System.out.println(Cars.wheel);
		System.out.println(myCar1.speed); // 인스턴스 객체 생성 후에는 접근 가능
		
		Cars myCar2 = new Cars();
		
		System.out.println("<변경 전>");
		System.out.println("MyCar1.speed: " + myCar1.speed); // 0
		System.out.println("MyCar2.speed: " + myCar2.speed); // 0
		System.out.println("MyCar1.wheel: " + myCar1.wheel); // 4
		System.out.println("MyCar2.wheel: " + myCar2.wheel); // 4
		// 클래스 변수도 인스턴스를 이용해서 접근은 가능하나, 가급적 인스턴스를 이용해서는 접근을 하지 않는 것이 좋음
		
		myCar2.speed = 100;
		myCar2.wheel = 5;
		System.out.println("<변경 후>");
		System.out.println("MyCar1.speed: " + myCar1.speed); // 0
		System.out.println("MyCar2.speed: " + myCar2.speed); // 100
		System.out.println("MyCar1.wheel: " + myCar1.wheel); // 5
		System.out.println("MyCar2.wheel: " + myCar2.wheel); // 5

	}

}

0개의 댓글