[Java/객체지향] 변수
2024. 8. 16. 20:02ㆍCS/Java
선언 위치에 따른 변수의 종류
클래스 영역(iv, cv)
- 선언문만 가능:→변수선언, 메서드선언(정의)
- 선언문의 순서 없음
- 클래스 영역 전체에서 유효
(1) 클래스 변수(cv) - 공통 속성
- static + iv
- 자동생성O → 객체 생성이 필요 X, 아무때나 사용 가능
- 생성시기: 클래스가 메모리에 올라갈 때 = 설계도가 필요할 때
(2) 인스턴스 변수(iv) - 개별 속성
- 자동생성X → 객체 생성 필요O
- 생성시기: 인스턴스가 생성되었을 때 =객체가 생성되었을 때 만들어짐
- 객체를 생성하면, 클래스의 내용을 보고, 클래스에 정의되어있는 대로 만들어짐
메서드영역(lv)
- 메서드 내에서 선언된 변수
(1) 지역변수(lv)
- 생성시기: 변수 선언문이 수행되었을 때
- 유효범위: 메서드가 생겨서 메서드가 끝날 때까지 유효)
객체: iv변수를 여러 개 묶어 놓은 것
클래스 변수와 인스턴스 변수
iv
- 개별 속성
- 인스턴스(객체)가 생성될 때마다 생성됨 → 각 인스턴스(객체)마다 각기 다른 값을 유지 가능
cv
- 공통 속성
- 모든 인스턴스(객체)가 하나의 저장공간을 공유 → 항상 공통된 값
class Card{
//iv = 개별 속성
String kind;
int number;
//cv = 공통 속성
static int width = 100;
static int height = 250;
}
Card c = new Card();//객체 생성
//iv는 객체생성필요 -> 참조변수 사용하여, 객체 사용
c.kind = "HEART";
c.number = 5;
//cv는 자동객체생성 -> 참조변수필수X, 클래스이름 사용
Card.width = 200;
Card.height = 300;
//-> 참조변수 사용도 가능. but, 권장X
'CS > Java' 카테고리의 다른 글
[Java/객체지향] 오버로딩과 오버라이딩 (0) | 2024.08.19 |
---|---|
[Java/객체지향] static 메서드와 인스턴스메서드 (0) | 2024.08.18 |
[Java/객체지향] 매개변수 (0) | 2024.08.18 |
[Java/객체지향] 메서드 (0) | 2024.08.17 |
[Java/객체지향] 클래스와 객체 (0) | 2024.08.14 |