인스턴스란?
자바를 공부하다 보면 인스턴스란 말을 종종 접하게 되는데 영어로 되어있어서 무슨 뜻인지
감을 잡기가 어렵다. 그러나 실제의 뜻은 아주 간단한 편이다. 인스턴스란 말이 무슨 뜻인지
알아보고 자바에서 사용하는 몇가지 용어를 더 알아보겠다.
1. 클래스로 부터 객체를 만드는 과정을 클래스의 인스턴스화(instantiate)라고 하며, 어떤
클래스로부터 만들어진 객체를 그 클래스의 인스턴스(instance)라고 한다.
※ 객체 = 인스턴스
클래스 --------> 인스턴스(객체)
객체는 인스턴스를 대표하는 말이며 포괄적인 의미로 쓰이는 말이고 인스턴스란 어떤
클래스로부터 만들어진 것인지를 강조하는 말로 다소 구체적인 의미로 쓰인다.
2. 객체는 속성과 기능 두가지의 구성요소로 이루어짐.
1) 속성(property) : 멤버변수등 객체를 이루는 요소를 말함.
2) 기능(function) : 메소드(method), 함수(function)등 객체가 수행하는 행위를 말함.
※TV의 예를 들어보면
TV의 속성 : 크기, 길이, 높이, 색상, 볼륨, 채널...
TV의 기능 : TV켜기, 끄기, 볼륨UP, 볼륨DOWN, 채널변경......
3. 파싱이란?
1) 파싱이란 어떠 데이터를 원하는 모양으로 만들어 내는 것을 말한다.
2) 특정문서(XML 따위)를 읽어 들여서 이를 다른 프로그램이나 서브루틴이 사용할 수 있는
내부의 표현방식으로 변환시켜 주는 것이다. XML 문서를 보면 HTML 처럼 <> 태그가
보인다. 사용자가 이렇게 입력하지만 컴퓨터가 알아볼 수 있도록 바꿔주는 과정을 의미한다.
3) 컴파일러의 일부로써 원시프로그램의 명령문이나 온라인 명령문, HTML 문서내용등에서
마크업 태그등을 입력으로 받아들여서 구문을 해석할 수 있는 단위로 여러부분으로
분할해 주는 역할을 한다.
4. 파서(Parser)
1) 파서는 파싱을 하는 프로세서를 말한다. 즉 파서가 파싱작업을 하는 것이다.
2) 파서란 컴파일러의 일부로서 원시프로그램, 즉 컴파일러나 인터프리터에서
원시프로그램을 읽어 들여, 그 문장의 구조를 알아내는 구문분석(parsing)을 행하는
프로그램을 말한다.
5. 캐스팅
프로그래머가 명시적으로 타입을 바꾸어 주는 것을 말한다. 대표적인 경우가 확대변환의
반대경우인 축소변환이 필요한 경우이며 이때 캐스팅을 해주어야 하는 것이다.
ex)
int i = 257 ;
short s ;
byte b ;
s = i ; // 컴파일 오류가 생김!
s = (short) i; // OK!
b = s ; // 컴파일 오류가 생김!
b = (byte) s ; // OK!
System.out.println("s=" +s) ; // s는 257
System.out.println("b=" +b) ; // b는 1
위에서 b = (byte) s; 는 16비트에서 8비트로 변수가 바뀐다. 이와같이 축소변환을 하는
캐스팅의 경우 원래 데이터의 정보를 잃어버릴 수가 있는데 자바에서는 항상 하위의
바이트들이 남게 되어있다. 예를 들어 위의 코드에서 컴파일 오류를 발생시키는 두 문장을
삭제하고 실행 시키면 s는 257이 되나 b는 256이 없어진 1이 된다.
한편 확대변환의 경우는 명시적인 캐스팅이 없어도 시스템에서 자동으로 변환을 해준다.
단 프로그램의 편리한 유지보수를 위하여 캐스팅을 해주는 것도 바람직하다.
short s = 3 ;
double x = (double) s ; // 안해도 되나 보기에는 좋다.
단순 변수의 캐스팅에는 다음의 법칙이 적용된다.
- 임의의 non-boolean 변수를 임의의 non-boolean 변수로 캐스팅하는 것이 가능하다.
- non-boolean 변수와 boolean 변수간의 캐스팅은 허용되지 않는다.
'SW 배움터 > 자바' 카테고리의 다른 글
(자바) 오버로딩과 오버라이딩의 차이 정리 (0) | 2022.09.01 |
---|---|
자바 문법 핵심만3 : 멤버 메소드 (0) | 2017.04.07 |
자바 문법 핵심만2 : 클래스 (0) | 2017.04.06 |
자바 문법 핵심만1 : 변수 (0) | 2017.04.05 |