[Java] Java에서 header file역할
글쓴이: 김영재 / 작성시간: 수, 2004/07/28 - 1:10오후
크. 자바 쌩초보입니다. 제가 보고 있는 자바 책에 다음 부분이 있습니다.
PERSON.java file
public class PERSON { public int age; public long height; public float weight; }
Test3.java file
public class Test3 { public static void main(String[] args) { PERSON brother = new PERSON(); brother.age =100; brother.height = 170L; brother.weight = 67.0F; System.out.println("age:" + brother.age); System.out.println("height:" + brother.height); System.out.println("weight:" + brother.weight); } }
여기서 Test3.java에 PERSON 클래스에 대한 정의가 없는데도 프로그램은 정상적으로 돌더군요. 물론 PESON.java 파일을 먼저 컴파일 하고서 Test3.java를 컴파일 했죠. 이게 말하자면 C++의 header 파일 비스무리한 역할을 하는 것 같습니다. 같은 파일안에 해당 클래스의 정의가 없어도 자바 컴파일러가 알아서 찾는것 같습니다. 제 생각에는 PERSON.class 파일을 찾아서 링크(?)하는 뭔가가 있는 듯 한데요. 제가 보는 책의 지금 단계에 그런 설명은 없구요 뒤에도 설명이 없는 듯 합니다.(책을 잘못 샀나? ㅠㅠ)
너무 초보적인 질문이라 민망합니다만 그래도 위의 메커니즘에 대해 간략히 설명해주시면 매우 고맙겠습니다.
Forums:
Re: [Java] Java에서 header file역할
PERSON brother = new PERSON();
제가 알기로는 이부분에서 PERSON이 클래스이름인거로 압니다.
죽 새로운 객체 만들때 PERSON이라는 클래스에 있ㄴ느걸 이용하는겁니다.
그리고 이건 import가 업으면 같은 디렉토리에 있는걸 사용합니다.
즐린
Re: [Java] Java에서 header file역할
CLASSPATH에 셋팅이 되어있을껍니다.
현재 시스템에서 정의된 CLASSPATH를 확인해보세여.(기본적으로 CLASSPATH에 . 이 들어갑니다)
자바는 컴파일시,실행시에 현재 정의된 CLASSPATH에서 class를 찾습니다.
같은 패키지안에 있는 클래스를 인스턴스해서 사용했네요
같은 Test3라는 클래스에서 PERSON클래스 안에 있는 변수들을 사용하기 위해서
PERSON brother = new PERSON();
인스턴스화 시키고
brother.age =100;
brother.height = 170L;
brother.weight = 67.0F;
이런식으로 값을 넣었고 출력했네요
여기서 인스턴스화는 Test3에서 이미 정의된 PERSON이라는 사용할 수 있게 생성하는 것이고
저렇게 인스턴스화를 시키면 Test3 클래스 안에서 마음껏 사용 할 수가 있답니다.
java 가장 기초.
java에서 모두 클래스로 이루어집니다.
어떤 프로그램에서 특정 클래스를 사용하려면, 해당 클래스 혹은 패키지를 import하여 사용합니다.
(include와 import가 비슷하다고 볼 수도 있습니다.)
java.util.List 같은 클래스를 사용하려면, import java.util.List 형태 혹은 import java.util.* 형태로 가져온 후 사용할 수 있습니다.
java.util 같은 것이 패키지라고 불리는 구조이며, 파일 형태로 보면 java/util 디렉토리가 있다고 볼 수도 있습니다.
같은 패키지(디렉토리)내에서 참조하는 클래스는 import할 필요가 없습니다.
클래스 파일 정의시 package 문으로 정의하지 않으면, default package라고 불립니다.
CLASSPATH 환경 변수와 그에 상응하는 여러가지 방법으로 클래스파일과 .jar(파일을 묶어둔것)파일을 탐색하여 import하여 사용할 수 있습니다.
java.lang.String 같은 클래스는 java.lang 패키지명을 생략하며, jre/lib/rt.jar java 기본 클래스 묶음에 들어있습니다.
--
http://www.dgkim.net/
아...
왜 이런 유물에 답글을 달았을까...
댓글 달기