[Java] Java에서 header file역할

김영재의 이미지

크. 자바 쌩초보입니다. 제가 보고 있는 자바 책에 다음 부분이 있습니다.

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 파일을 찾아서 링크(?)하는 뭔가가 있는 듯 한데요. 제가 보는 책의 지금 단계에 그런 설명은 없구요 뒤에도 설명이 없는 듯 합니다.(책을 잘못 샀나? ㅠㅠ)

너무 초보적인 질문이라 민망합니다만 그래도 위의 메커니즘에 대해 간략히 설명해주시면 매우 고맙겠습니다.

hys545의 이미지

김영재 wrote:
크. 자바 쌩초보입니다. 제가 보고 있는 자바 책에 다음 부분이 있습니다.

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 파일을 찾아서 링크(?)하는 뭔가가 있는 듯 한데요. 제가 보는 책의 지금 단계에 그런 설명은 없구요 뒤에도 설명이 없는 듯 합니다.(책을 잘못 샀나? ㅠㅠ)

너무 초보적인 질문이라 민망합니다만 그래도 위의 메커니즘에 대해 간략히 설명해주시면 매우 고맙겠습니다.[/code]


PERSON brother = new PERSON();
제가 알기로는 이부분에서 PERSON이 클래스이름인거로 압니다.
죽 새로운 객체 만들때 PERSON이라는 클래스에 있ㄴ느걸 이용하는겁니다.
그리고 이건 import가 업으면 같은 디렉토리에 있는걸 사용합니다.

즐린

MackTheKnife의 이미지

김영재 wrote:
크. 자바 쌩초보입니다. 제가 보고 있는 자바 책에 다음 부분이 있습니다.

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 파일을 찾아서 링크(?)하는 뭔가가 있는 듯 한데요. 제가 보는 책의 지금 단계에 그런 설명은 없구요 뒤에도 설명이 없는 듯 합니다.(책을 잘못 샀나? ㅠㅠ)

너무 초보적인 질문이라 민망합니다만 그래도 위의 메커니즘에 대해 간략히 설명해주시면 매우 고맙겠습니다.[/code]

CLASSPATH에 셋팅이 되어있을껍니다.
현재 시스템에서 정의된 CLASSPATH를 확인해보세여.(기본적으로 CLASSPATH에 . 이 들어갑니다)
자바는 컴파일시,실행시에 현재 정의된 CLASSPATH에서 class를 찾습니다.

익명 사용자의 이미지

같은 Test3라는 클래스에서 PERSON클래스 안에 있는 변수들을 사용하기 위해서

PERSON brother = new PERSON();
인스턴스화 시키고
brother.age =100;
brother.height = 170L;
brother.weight = 67.0F;
이런식으로 값을 넣었고 출력했네요

여기서 인스턴스화는 Test3에서 이미 정의된 PERSON이라는 사용할 수 있게 생성하는 것이고
저렇게 인스턴스화를 시키면 Test3 클래스 안에서 마음껏 사용 할 수가 있답니다.

dgkim의 이미지

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/

dgkim의 이미지

왜 이런 유물에 답글을 달았을까...

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.