객체? 실제로 존재하는 것, 사물 또는 개념
클래스?
객체를 정의해 놓은 것
객체를 생성하는 데 사용
Tv클래스 정의
class Tv {
String color; //색상
boolean power; //전원상태
int channel; //채널
void power(){ //전원을 켜고 끄는 메서드. 파라미터도 리턴도없는 메서드.
power = !power;
}
void channelUp(){ //채널을 하나 증가시키는 메서드.
channel++;
}
void channelDown(){ //채널을 하나 감소시키는 메서드.
channel--;
}
}
클래스 먼저 작성한 다음, 클래스로부터 객체를 생성해서 사용.
클래스의 인스턴스화(instantiate)? 클래스로부터 객체를 만드는 과정
클래스를 선언한 것은 설계도를 작성한 것에 불과하므로,
인스턴스를 생성해야만 제품을 사용할 수 있음.
위에서 만든 클래스의 인스턴스 생성 및 사용
public static void main(String[] args){
Tv tv; //Tv인스턴스를 참조하기 위한 변수 tv를 선언.
tv = new Tv(); //Tv인스턴스를 생성 후 참조변수 tv에 저장.
tv.channel = 7; //Tv인스턴스의 멤버변수 channel의 값을 7로 변경.
tv.channelDown(); //Tv인스천스의 메서드 channelDwon()을 호출.
System.out.println("현재 채널은" + tv.channel + "입니다.");
}
}
① Tv tv;
Tv클래스 타입의 참조변수 tv를 선언.
메모리에 참조변수 tv를 위한 공간이 마련됨.
아직 인스턴스가 생성되지 않았으므로 이 참조변수로 할 수 있는 건 아무것도 없음.
② tv = new Tv();
연산자 new에 의해 Tv클래스의 인스턴스가 메모리의 빈 공간에 생성.
이때 멤버변수는 각 자료형에 해당하는 기본값으로 초기화.
③ tv.channel = 7;
참조변수 tv에 저장된 주소에 있는 인스턴스의 멤버변수 channel에 7을 저장.
인스턴스의 멤버변수(속성)을 사용하려면 '참조변수.멤버변수'와 같이 사용.
'.'이 표시가 참조한다는 표시.
④ tv.channelDown();
참조변수 tv가 참조하고 있는 Tv인스턴스의 channelDown메서드를 호출.
channelDown 메서드는 멤버변수 channel에 저장되어있는 값을 1 감소시킴.
channelDown()에 의해서 channel의 값은 7에서 6이 됨.,l,