자바(Java)

자바 Java 객체지향이란무엇일까? #2 객체배열 클래스 인스턴스변수

JAVABOZA 2023. 6. 3. 00:43

배열이란?

많은 수의 변수를 다뤄야할 때, 배열로 다룬다.

 

객체배열도 비슷하다.

많은 수의 객체를 다뤄야할 때, 객체배열로 다룬다.

단! 객체가 저장되는 것이 아닌 객체의 주소가 저장되는 것  ==  참조변수들을 하나로 묶은 참조변수 배열

 

Tv tv1, tv2, tv3.  ----> Tv[] tvArr = new Tv[3];     // 길이가 3인 Tv타입의 참조변수 배열

 

이렇게 작업한것은 객체를 그저 다루기 위한 참조변수들이 만들어진 것뿐, 아직 객체가 생성된 것이 아님.

객체를 생성해서 객체 배열의 각 요소에 저장하는 것은 필수여야 한다. 까먹지 말자!

 

Tv tv1, tv2, tv3.  ----> Tv[] tvArr = new Tv[3]; // (생성)

 

tvArr[0] = new Tv();             // 객체를 생성해서 배열의 각 요소에 저장

tvArr[1] = new Tv();

tvArr[2] = new Tv();

 

저장한 코드를 간단하게 한 것🔽 (배열의 초기화 블럭 사용)

Tv tvArr = { new Tv(), new Tv(), new Tv()}

 

 

클래스

: '객체를 생성화기 위한 틀' 이며 '속성(멤버변수)과 기능(메서드)으로 정의'


자바에서 변수는 클래스변수(cv) / 인스턴스변수(iv) / 지역변수(lv) 세종류가 있다.

🔔앞으로 해당 변수들을 cv / iv / lv 로 언급할 예정

 

class Variables     -> 클래스영역
{
	int iv;                // 인스턴스변수
    static int cv;         // 클래스변수(static변수, 공유변수)
    
    void method()   -> 메서드영역
    {
    	int lv = 0;        // 지역변수
    }
}

인스턴스 변수(iv)

1. 클래스영역에서 선언

2. 인스턴스를 생성할 때 만들어짐, (그래서 iv의 값을 읽거나 저장하려면 먼저 인스턴스를 생성해야함)

3. 인스턴스마다 별도의 공간을 가지므로 서로 다른 값을 가질 수 있음.

 

클래스변수(cv)

1.  iv 앞에 static 붙이면 됨

2. cv는 모든 인스턴스가 공통된 저장공간(변수)를 공유 즉, 한클래스의 모든 인스턴스들이 공통적인값을 유지해야하는

'속성'의 경우 cv로 선언

3. iv와 달리 인스턴스를 생성하지 않고 언제라도 즉시 사용가능 '클래스이름.클래스변수'로 직접선언 가능 👈 이와 같은형식으로 사용 

 

지역변수(lv)

1. 메서드내에서 선언, 메서드가 종료되면 사라짐

2. for문 while문의 블럭 내에 선언된 변수는, 지역변수가 선언된 블럭{} 내에서만 사용 가능


 

iv는 인스턴스가 생성될때 생성!

인스턴스마다 각기 다른값을 가질 수도 있음!

cv는 항상 공통된 값을 갖는다!