[Java/자바] 클래스와 객체

클래스와 객체

클래스와 객체를 설명하는 예시로 여러 예시가 있습니다.

게임 비유 : 클래스(직업)에 따라 클래스(직업)에 맞는 아이템과 동작들이 주어져서 객채가 생성되는 것.
붕어빵 비유 : 클래스라는 모형틀(붕어빵틀)을 만들고 팥을 넣고 구워 객채(붕어빵)를 만든다.

이러한 예시를 보고 클래스와 객체가 무엇인지 아래 설명을 본다면 좀 더 이해가 쉬울 겁니다.

 

 

클래스

클래스란 "객체를 정의해놓은 것" 또는 "객체의 설계도 또는 틀"이라고 정의할 수 있습니다.

클래스는 객체를 생성하는데 사용되며, 객체는 클래스에 정의된 대로 생성됩니다.

클래스의 정의 : 객체를 정의해 놓은 것
클래스의 용도 : 객체를 생성하는데 사용

 

객체

객체는 "실제로 존재하는 것"으로 우리가 주변에서 볼 수 있는 책상, 의자, 컴퓨터와 같은 사물들을 곧 객체라고 할 수 있습니다.

프로그래밍에서의 객체는 클래스에 정의된 내용대로 메모리에 생성된 것을 뜻합니다.

객채의 정의 : 실제로 존재하는 것, 사물 또는 개념
객체의 용도 : 객체가 가지고 있는 기능과 속성에 따라 다르다.

 

인스턴스

인스턴스란, 클래스로부터 객체를 만드는 과정클래스의 인스터스화라고 하며,

클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 합니다.

 

class Tv { 
     // Tv의 속성(멤버변수) 
     String color;           	// 색상 
     boolean power;         	// 전원상태(on/off) 
     int channel;           	// 채널 

     // Tv의 기능(메서드) 
     void power()   { power = !power; }  // TV를 켜거나 끄는 기능을 하는 메서드  
     void channelUp()   {  ++channel; }  // TV의 채널을 높이는 기능을 하는 메서드 
     void channelDown() { --channel; }   // TV의 채널을 낮추는 기능을 하는 메서드  
}

위 처럼 Tv 클래스가 있다고 가정합시다.

Tv 클래스를 선언한 것은 Tv설계도를 작성한 것에 불과하므로 Tv인스턴스를 생성해야 Tv를 사용할 수 있습니다.

 

인스턴스는 다음과 같이 생성할 수 있습니다.

클래스명 변수명 = new 클래스명();
Tv t = new Tv();

 


Example Code

class Tv { 
     // Tv의 속성(멤버변수) 
     String color;           	// 색상 
     boolean power;         	// 전원상태(on/off) 
     int channel;           	// 채널 

     // Tv의 기능(메서드) 
     void power()   { power = !power; }  // TV를 켜거나 끄는 기능을 하는 메서드  
     void channelUp()   {  ++channel; }  // TV의 채널을 높이는 기능을 하는 메서드 
     void channelDown() { --channel; }   // TV의 채널을 낮추는 기능을 하는 메서드  
}

class TvTest { 
      public static void main(String args[]) { 
            Tv t;                  // Tv인스턴스를 참조하기 위한 변수 t를 선언       
            t = new Tv();          // Tv인스턴스를 생성한다. 
            t.channel = 7;         // Tv인스턴스의 멤버변수 channel의 값을 7로 한다. 
            t.channelDown();       // Tv인스턴스의 메서드 channelDown()을 호출한다. 
            System.out.println("현재 채널은 " + t.channel + " 입니다."); 
      } 
}

출력 결과

Tv 클래스를 생성하고 그 클래스 안에는 Tv의 속성과 Tv의 기능인 메서드가 포함되어있습니다.

( 메서드에 void가 붙으면 return; 반환을 생략 가능합니다 ) 

메인 클래스인 TvTest에 Tv 클래스를 이용해 t라는 객체를 생성하고 그 객체의 채널은 7로 지정하고, channelDown() 메서드를 통해 채널을 -1 하여 "현재 채널은 6 입니다." 라고 출력이 되었습니다.

 


이번 포스팅에는 자바의 클래스와 객체에 대해 간단하게 알아보았습니다.

다음 포스팅에서는 클래스 변수, 인스턴스 변수, 클래스 메서드, 인스턴스 메서드에 대해 다뤄보려 합니다.

 

클래스 변수와 인스턴스 변수
 

(Java/자바) 클래스 변수, 인스턴스 변수, 지역 변수란?

이 글을 읽기 앞서 자바의 클래스와 객체란? 인스턴스란 ? 무엇인지 모른다면 아래 포스팅을 참고하시면 좋습니다. (Java/자바) 클래스와 객체 클래스와 객체 클래스와 객체를 설명하는 예시로 여

hstory0208.tistory.com

 

클래스 메서드와 인스턴스 메서드
 

[Java/자바] 클래스(static) 메서드와 인스턴스 메서드

클래스 변수와 인스턴스 변수에서도 그랬듯이, 메서드 앞에 static이 붙으면 클래스 메서드, 없으면 인스턴스 메서드 입니다. 클래스 메서드도 클래스 변수처럼, 객체를 생성하지 않고도 "클래스

hstory0208.tistory.com

 


참고자료
자바의 정석3