Programming Language/JAVA

클래스 변수와 인스턴스 변수

Glory-L 2023. 2. 14. 19:36

클래스 변수와 인스턴스 변수 

 

Class Card {
	
    // 값이 다를 수 있는 속성
    String kind;	// 무늬 ( 카드 class의 개별 속성 - 인스턴스 변수)
    String number;	// 숫자 ( 카드 class의 개별 속성 - 인스턴스 변수)
	
    // 공통적인 속성
    static int width = 100;	// 폭 ( 카드 class의 공통 속성 - 클래스 변수)
    static int height = 250;	// 높이 ( 카드 class의 공통 속성 - 클래스 변수)

}

// 사용하기 

Card c = new Card();	// 객체 생성

// 객체 사용

c.kind = "HEART";	// 인스턴스 변수 
c.number = 5;	// 인스턴스 변수 

c.width = 200;	// 클래스 변수 
c.height = 300;	// 클래스 변수 

// 언뜻 보면 둘이 사용방법이 똑같다. 실제로도 사용하는데 에러가 발생하지 않는다. 
// 다만 위와 같이 참조변수를 사용하여 값을 넣는 것은 권장되는 방법이 아니다. 

// 클래스 변수 사용 권장 방법 - 클래스이름을 사용한다. 
// tip) 클래스 변수는 인스턴스와 달리 객체 생성이 필요 없다. 
Card.width = 200;
Card.height = 300;

 

 

* 인스턴스 변수는 객체마다 1개씩 생성된다. 하지만 클래스 변수는 공유하는 개념이다.

 

* 같은 위치를 가르키는데 공간을 객체마다 1개씩 생성하면 메모리 낭비라는 문제가 발생한다.

 

* 따라서  따로 생성하고 값을 하나만 유지하고 메모리 공간도 절약하는 방법을 사용한다. 

 

 

 

 


 

[ 자바의 정석 - 기초 유튜브 강의 영상 참고 ]

https://www.youtube.com/watch?v=frKHrnsCoS4&list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp&index=58