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