클래스와 객체
클래스란 '객체를 정의해놓은 것' 또는 클래스는 '객체의 설계도 또는 틀' 이라고 정의할 수 있다.
클래스는 객체를 생성하는데 사용되며, 객체는 클래스에 정의된 대로 생성된다.
클래스의 정의 : 클래스란 객체를 정의해 놓은 것이다.
클래스의 용도 : 클래스는 객처를 생성하는데 사용된다.
이렇게 정의할 수 있다.
우리가 살고 있는 실생활에서 예로 들면, 제품 설계도와 제품과의 관계라고 할 수 있다.
예를 들어, TV설계도(클래스)는 TV라는 제품(객체)을 정의한 것이며, TV(객체)를 만드는데 사용된다.
TV설계도를 통해 TV가 만들어진 후에야 사용할 수 있다.
따라서 프로그래밍에서는 먼저 클래스를 작성한 다음, 클래스로부터 객체를 생성하여 사용한다.
하나의 설계도만 잘 만들어 놓으면 제품을 만드는 일이 쉬워지는 것처럼,
하나의 클래스를 한번만 잘 만들어 놓기만 하면, 매번 객체를 생성할 때마다
어떻게 객체를 만들어야 할지를 고민하지 않아도 된다.
객체의 구성요소 - 속성과 기능
클래스란 객체를 정의한 것이므로 클래스에는 객체의 모든 속성과 기능이 정의되어 있다.
클래스로부터 객체를 생성하면, 클래스에 정의된 속성과 기능을 가진 객체가 만들어지는 것이다.
이제부터 속성보다는 '멤버변수'를 기능보다는 '메소드'를 주로 사용할 것이다.
다시 TV로 예를 들면 다음과 같다.
속성 | 크기, 길이, 높이, 색상, 볼륨, 채널 등 |
기능 | 켜기, 끄기, 볼륨 높이기, 낮추기, 채널변경하기 등 |
그럼 이제 실제로 TV클래스를 생성하요 사용해보자.
1. Tv t;
Tv클래스 타입의 참조변수 t를 선언한다. 메모리에 참조변수 t를 위한 공간이 마련되었지만
아직 인스턴스가 생성되지 않았으므로 참조변수로 아무것도 할 수 없다.
2. t = new Tv() ;
연산자 new에 의해 Tv클래스의 인스턴스가 메모리의 빈 공간에 생성된다.
이 때, 멤버변수는 각 자료형에 해당하는 기본값으로 초기화 된다.
color는 null, power는 false, channel은 0으로 초기화 된다.
3. t.channel = 7 ;
참조변수 t에 저장된 주소에 있는 인스턴스의 멤버변수 channel에 7을 저장한다.
4. t.channelDown() ;
참조변수 t가 참조하고 있는 Tv인스턴스의 channelDown메소드를 호출한다.
channelDown메소드는 멤버변수 channel에 저장되어있는 값을 1 감소시킨다.
이 예제에서 알 수 있듯이
인스턴스는 참조변수를 통해서만 다룰 수 있으며, 참조변수의 타입은 인스턴스의 타입과 일치해야한다.
객체 배열
많은 수의 객체를 다뤄야할 때, 배열로 다루면 편리할 것이다. 객체 역시 배열로 다루는 것이 가능하며,
이를 '객체 배열'이라 한다.
객체 배열을 생성하는 방법은 다음과 같다.
Tv [] tvArr = new Tv[3] ;
이렇게 해서 객체 배열을 생성하지만, 객체를 다루기 위한 참조변수들이 만들어진 것일 뿐,
아직 객체가 저장되지 않았다. 객체를 생성해서 객체 배열의 각 요소에 저장하는 것을 잊으면 안 된다.
그래서 다음과 같이 해주어야 한다.
Tv [] tvArr = new Tv[3] ;
tvArr[0] = new Tv() ;
tvArr[1] = new Tv() ;
tvArr[2] = new Tv() ;
다뤄야할 객체의 수가 많을 때는 다음과 같이 for문을 사용하면 된다.
Tv[] tvArr = new Tv[100] ;
for(int i = 0; i < tvArr.length; i++){
tvArr[i] = new Tv();
}
'JAVA > Basic' 카테고리의 다른 글
[JAVA-basic] 변수와 메소드(2) (0) | 2021.08.13 |
---|---|
[JAVA-basic] 변수와 메소드 (0) | 2021.08.11 |
[JAVA-basic] 다차원 배열 (0) | 2021.08.09 |
[JAVA-basic] String배열 (0) | 2021.08.06 |
[JAVA-basic] 배열 (0) | 2021.08.04 |