-

자바를 시작하기 전에 :: 인스턴스의 생성과 사용 본문

언어/자바

자바를 시작하기 전에 :: 인스턴스의 생성과 사용

lingi04 2016. 11. 29. 00:37



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Airconditioner{
    String color;
    boolean power;
    int temperature;
 
    void power()  { power = !power; }
    void tempUp()    { temperature++; }
    void tempDown()  { temperature--; }
}
 
class ACTest{
    public static void main(String args[]){
        Airconditioner air;
        air = new Airconditioner();
        air.temperature = 20;
    }
}
cs

위의 예제는 Airconditioner클래스로부터 인스턴스를 생성하고 인스턴스의 속성(temperature)과 메서드(temperatureDown())를 사용하는 방법을 보여준다.


1. Airconditioner air;

Airconditioner 클래스 타입의 참조변수 air를 선언한다. 메모리에 참조변수 air를 위한 공간이 마련된다. 아직 인스턴스가 생성되지 않았으므로 참조변수로 아무것도 할 수 없다.


air 

 


2. air = new Airconditioner();

연산자 new에 의해 Airconditioner 클래스의 인스턴스가 메모리의 빈 공간에 생성된다. 주소가 0x100인 곳에 생성되었다고 가정한다. 이 때, 멤버변수는 각 자료형에 해당하는 기본값으로 초기화된다.

color는 참조형이므로 null로, power는 boolean이므로 false로, 그리고 temperature는 int형이므로 0으로 초기화 된다.


 air  

 

 

  0x100 

 

 

color  

  null 

 

 

power  

  false 

 

 

channel  

  0 

 

 

 

  power() 

 

 

 

  tempUp() 

 

 

 

  tempDown() 


그 다음에는 대입연산자(=)에 의해서 생성된 객체의 주소값이 참조변수 t에 저장된다. 이제는 참조변수 t를 통해 Tv 인스턴스에 접근할 수 있다. 인스턴스를 다루기 위해서는 참조변수가 반드시 필요하다.


air

0x100

     →→→→→→

 0x100

 

 

color

null

 

 

power

false

 

 

temperature

0

 

 

 

power()

 

 

 

tempUp()

 

 

 

tempDown()


3. air.temperature = 20;

참조변수 air에 저장된 주소에 있는 인스턴스의 멤버변수 temperature에 20을 저장한다. 

air

0x100

  →→→→→→

0x100

 

 

color

null

 

 

power

false

 

 

temperature

20

 

 

 

power()

 

 

 

tempUp()

 

 

 

tempDown()


4. air.tempDown();

참조변수 air가 참조하고 있는 Airconditioner인스턴스의 tempDown메서드를 호출한다. tempDown메서드는 멤버변수 temprature에 저장되어있는 값을 1 감소시킨다.


air

0x100

 

0x100

 

 

color

null

 

 

power

false

 

 

temperature

19

 

 

 

power()

 

 

 

tempUp()

 

 

 

tempDown()

tempDown()에 의해서 temperature의 값은 20에서 19가 된다.



출처 : 자바의 정석



Comments