YTCW

java 객체 지향 프로그램의 변수 본문

java

java 객체 지향 프로그램의 변수

YTCW 2024. 9. 5. 16:30

필드는 

객체의 지속적이 ㄴ상태를 저장하는 클래스 내부의 변수

 

지역변수

메서드가 실행되는 동안에만 존재하는 일시적인 변수

 

인스턴스 변수

클래스의 각 객체(인스턴스) 에 속한 변수

클래스 내부에서 선언하지만 

객체가 생성될 때 메모리에 할당 된다 

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