기타/프로그래밍 분류

JAVA - 11.클래스와 인스턴스

zelkova 2011. 6. 29. 19:50
클래스란?
 클래스는 객체의 설계도 정도로 해석할 수 있다. 설계도에 의해 실제 만들어지는 것을 객체(또는 인스턴스)라고 한다. 이렇게 객체를 직접 만들어 사용하지 않고 클래스로 객체의 명세를 만들고 해당 명세에 구체적인 값을 채워 객체로 만드는 이유는 실제 객체(인스턴스)를 보다 쉽게 만들기 위한 것이다. 성질이나 기능이 같은 객체들을 클래스없이 만든다면 객체를 생성할 때 공통 성질과 기능을 매번 정의해 주어야 할 것이다.

 그러나 클래스로 일저으이 객체 틀(탬플릿)을 만들어 놓고 그것으로 객체를 만든다면 생산성이 증가할 것이다. 예를 들어 설명하자면 연필로 글을 쓰는것과 활자(나무판에 글씨모양으로 홈을 판것)에 물감을 칠한뒤 종이에 찍어내는 것과 같은방법이다.

혹시 활자를 몰라서 이해가 되지 않는다면 '사랑합니다'를 A4용지에 2000번 연필로 직접 쓰는것과 프린터로 2000번 뽑는것의 차이라고 보면된다.

현실 객체의 클래스를 생성하는 방법은 현실 객체의속성은 클래스내에 변수로 정의하고, 현실 객체의 행위는 클래스내에 함수로 정의된다. 즉 현실 객체의 속성은 자바 클래스의 멤버 변수로, 현실 객체의 행위는 자바 클래스의 멤버 함수로 매핑된다.

  객체 : 노트북
 객체의 속성 : 제조회사, 모델명, CPU, 메모리, 하드용량
 변수 : 객체의 이름 정하기
 행위 : 노트북으로 게임을하다, 노트북으로 문서편집을 하다.
 함수 = 행위

클래스 정의 문법
public class student  // 클래스 프로토타입(접근제어자 + class + 식별자
{
  클래스 멤버(변수)들이 들어가는 부분
}

인스턴스(객체)란?
인스턴스는 클래스의 멤버와 동일한 구성요소, 즉 동일한 멤버 변수와 멤버 함수를 가진다. 더 쉽게 말해서 클래스 안에 있는건 모두 똑같다.
 
그렇다면 클래스와 인스턴트는 같은 단어일가? 아니다!

인스턴트는 클래스를 복사해서 쓰되 들어가는 값은 다르게 쓸 수 있다.

예를 들어서 줄이 그어진 연습장을 생각해보자. 장을 넘겨보면 매 장마다 일정한 간격으로 줄이 쳐져있다. 다른 제품의 연습장도 마찬가지이다. 이것은 객체일가? 클래스일가?

정답은 객체(인스턴트)이다.
클래스는 공책을 찍어내는 공장, 설계도다.

각각의 공책은 생물공책, 화학공책, 수학공책 등등의 이름이 있다. 각각 공책의 이름, 즉 객체의 이름은 인스턴트 변수 이다.

클래스(공책을 찍어내느 공장) --> 공책 (객체,인스턴트) --> 화학공책(인스턴트 변수)
                                          --> 공책 (객체,인스턴트) --> 수학공책(인스턴트 변수)
                                          --> 공책 (객체,인스턴트) --> 생물공책(인스턴트 변수)


클래스의 인스턴트 사용방법
클래스명 인스턴트명 = new 클래스연산자();

인스턴트명.인스턴트 변수
인스턴트명.인스턴트 함수

ex)
int math,kor.eng;

student inst1 = new student();
student inst2 = new student();
student inst3 = new student();

inst1.math
inst1.kor;
inst2.kor;
inst2.eng;
inst3.eng;
inst3.math;



반응형

'기타 > 프로그래밍 분류' 카테고리의 다른 글

JAVA - 13.접근제어  (0) 2011.06.30
Java - 12.Static과 메모리 구조  (2) 2011.06.30
JAVA - 10.객체지향의 개념  (0) 2011.06.28
JAVA - 9.주석  (0) 2011.06.28
JAVA - 8.함수  (0) 2011.06.28