Notice
Recent Posts
Recent Comments
Link
YTCW
java 객체 지향 프로그램의 변수 본문
필드는
객체의 지속적이 ㄴ상태를 저장하는 클래스 내부의 변수
지역변수
메서드가 실행되는 동안에만 존재하는 일시적인 변수
인스턴스 변수
클래스의 각 객체(인스턴스) 에 속한 변수
클래스 내부에서 선언하지만
객체가 생성될 때 메모리에 할당 된다
Car myCar = new Car("Genesis g90", 2024);
클래스 (정적) 변수
static 키워드를 사용하여 선언되는 변수
클래스의 모든 인스턴스에서 공유되는 데이터이다.
프로그램이 시작될때 생성된다.
프로그램이 종료 될 때 소멸된다. (메모리에 할당 된다)
package chapter04;
class CarClass{
// 인스턴스 변수
// 각 객체 ( 인스턴스 ) 마다 다른 값을 가진다.
// 객체가 생성될때 정해지는 값
// Car myCar = new Car("Genesis g90", 2024);
String color;
int speed;
String brand;
// 정적 변수
// 해당 클래스로 생성되는 모든 객체가 동일한 값을 가짐
// 처음부터 정해지는 값
// 변수 선언과 동시에 공유될 값을 초기화
static int tireNumber = 4; // 바퀴가 항상 4개이면 할때마다 값을 넣어줄 필요 없다
static int doorNumber = 4; // 문도 4개로 고정
void accelerate(int increment) { // 엑셀 동작을 발생시키면~
speed += increment; // speed = speed + increment;
}
}
public class Object05 {
public static void main(String[] args) {
// CarClass 인스턴스화
CarClass car1 = new CarClass();
CarClass car2 = new CarClass();
// 객체의 인스턴스 변수 : 객체명.속성
// 인스턴스 생성과 동시에 ()괄호안에 값을 넣어서 생성해도되고
// 인스턴스화 시켜놓고나서 하나하나 값을 집어넣어도 된다.
car1.brand = "kia";
car1.color = "black";
// 객체의 클래스 변수 : 클래스명.속성 ( 각 인스턴스로도 홀출 가능 )
System.out.println(CarClass.tireNumber); // 4
// 인스턴스의 스태틱(정적 변수)값 변경도
// 인스턴스 변수와 같이 그냥 값을 넣어주면 바뀌긴 하지만
// 객체의 클래스 변수는 클래스명으로 접근을 권장한다.
// System.out.println(car1.tireNumber); // 4
// car1.tireNumber = 5;
System.out.println(car2.brand); // null
클래스 변수 vs 인스턴스 변수
형태
필드(속성, 맴버 변수) 중에 static 이 붙은 것은 클래스 변수,
붙지 않은 것은 인스턴스 변수
선언 위치
클래스 영역 내에서 선언
생성 시기 & 사용 시기
1. 클래스 변수
클래스가 메모리에 올라갈 때
객체 생성 이전에도 사용 가능하다.
2. 인스턴스 변수
인스턴스가 생성되었을때
객체 생성 이후에만 사용 가능하다
호출 방법은
클래스 변수 : 클래스명.변수명
인스턴스변수 : 객체명.변수명
package chapter04;
class Example {
int instanceVale;
static int classValue;
}
class Counter {
// 클래스 변수
static int count = 0;
Counter() {
count++;
}
}
public class Object06 {
public static void main(String[] args) {
Counter c1 = new Counter();
Counter c2 = new Counter();
Counter c3 = new Counter();
Counter c4 = new Counter();
Counter c5 = new Counter();
System.out.println(c3.count); //5
new Counter();
new Counter();
new Counter();
new Counter();
System.out.println(Counter.count); // 9
}
}
'java' 카테고리의 다른 글
java 용어 정리, overloading (0) | 2024.09.06 |
---|---|
java 메소드, method (0) | 2024.09.05 |
java 객체 지향 프로그래밍, oop (object - orientend - programming) (3) | 2024.09.05 |
java 배열, array (4) | 2024.09.05 |
java 반복문, for, while, do-while (0) | 2024.09.04 |