자바의 정석 - 기초편

객체의 생성과 사용

ODaram 2022. 8. 3. 18:18

객체의 생성과 사용

1. 객체의 생성

  클래스명 변수명;                   // 클래스의 객체를 참조하기 위한 참조변수를 선언

  변수명 =  new 클래스명();     // 클래스의 객체를 생성 후, 객체의 주소를 참조변수에 자정

TV t;			// TV 클래스 타입의 참조변수 t를 선언
t = new TV();   // TV 인스턴스를 생성한 후, 생성된 TV인스턴스의 주소를 t에 저장

 -> 간편하게 하나의 코드로 작성 가능

TV t = new TV();  -> TV 객체를 생성

 

2. 객체의 사용

  t.channel1 = 7;                    // TV 인스턴스의 멤버변수 channel의 값을 7로 한다.

  t.channelDown();                // TV 인스턴스의 메서드 channelDown()을 호출한다.

  System.out.println(:현재 채널은 " + t.channel + "입니다.");

과정을 정리해보면...

1.  클래스 작성 (설계도)

2. 객체 생성 (리모컨)

3. 객체의 사용 (제품)

 

객체의 생성과 사용 - 예제

Tv t1 = new Tv();

Tv t2 = new Tv();

t.channel1 = 7; 

예제) TV 인스턴스 참조해서 값 출력하기

public class Prac_01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
	TV tv1;				// Tv 인스턴스를 참조하기 위한 변수 tv1를 선언
	tv1 = new TV(); 	// Tv 인스턴스를 생성한다. 
	tv1.channel = 7;	// Tv 인승턴스의 멤버변수 Channel의 값을 7로 저장
	tv1.channelUp();	// Tv 인스턴스의 메셔드 ChannelUp()을 호출
	System.out.println("현재 채널은" + tv1.channel + "입니다.");
	}
}
class TV {
	// TV의 속성 (멤버변수)
	int channel;					// 채널
	
	// TV의 기능 (메서드)
	void channelUp() {++channel;}	// TV의 채널을 높이는 기능을 하는 메서드
	}

channelUP 메서드로 인해 +1된 8이 출력됨

예제2) 객체마다 별도의 저장 공간을 갖는 것을 확인

* t1 과 t2의 값은 동일하게 시작함

  서로 주소가 다름 (서로다른 객체가 있을 경우 주소가 서로 다름)

public class Prac_01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		TV t1 = new TV();
		TV t2 = new TV();
		System.out.println("t1의 channel 값은"+t1.channel+"입니다.");
		System.out.println("t2의 channel 값은"+t2.channel+"입니다.");
		
	}
}
class TV {
	int channel;
}

t1, t2 값 모두 0

 

 *t1의 채널에 7을 입력된다면 t1의 채널값만 7로 변경됨

public class Prac_01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		TV t1 = new TV();
		TV t2 = new TV();
		System.out.println("t1의 channel 값은"+t1.channel+"입니다.");
		System.out.println("t2의 channel 값은"+t2.channel+"입니다.");
        
        t1.channel = 7; // channel의 값을 7로 함
		System.out.println("t1의 channel값을 7로 변경하였습니다.");
		
	}
}
class TV {
	int channel;
}

t1은 7, t1은 0 이다.

public class Prac_01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		TV t1 = new TV();
		TV t2 = new TV();
		System.out.println("t1의 channel 값은"+t1.channel+"입니다.");
		System.out.println("t2의 channel 값은"+t2.channel+"입니다.");
        
        t1.channel = 7; // channel의 값을 7로 함
		System.out.println("t1의 channel값을 7로 변경하였습니다.");
        
		System.out.println("t1의 channel값은" + t1.channel + "입니다.");
		System.out.println("t2의 channel값은" + t2.channel + "입니다.");
        // t1, t2의 값을 출력해보기
		
	}
}
class TV {
	int channel;
}

실제로 t1의 값만 7로 변경됨

  >> 객체마다 별도의 저장 공간을 갖는 것을 확인

'자바의 정석 - 기초편' 카테고리의 다른 글

클래스의 정의  (0) 2022.08.04
객체 배열  (0) 2022.08.04
한 파일 여러 클래스 작성하기  (0) 2022.08.03
객체지향 언어 / 클래스와 객체  (0) 2022.08.03
Arrays로 배열 다루기  (0) 2022.08.03