java

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ java ] in KIDS
글 쓴 이(By): Extreme (열혈남아)
날 짜 (Date): 1998년 4월 29일 수요일 오전 10시 50분 06초
제 목(Title): to lazz


< file Start.java >
package lazz.study;
// 이 클래스에서는 MyClass라는 것을 사용하므로 그것을 import해야죠
import lazz.study.*;   // 또는 import lazz.study.MyClass
class Start{
  public static void main(String args[])
  {
    MyClass cl = new MyClass();
    System.out.println(cl.str);
  }
}

< file MyClass.java >
package lazz.study;
class MyClass{
  String str;
  public void MyClass()
  {
    str = "abc";
  }
}


다음으론 주의하실 점인데, 위에서 MyClass의 프로토 타입을 보시면

그냥 class입니다. 즉..

class MyClass {

위처럼 선언되어 있는데, 다음과는 차이가 있죠.

public class MyClass {

만약 클래스 선언시에 public을 붙여 주지 않으면 디폴트는 package 선언이 됩니다.

따라서 위 소스를 보시면 MyClass를 사용하시는 Start라는 클래스가 다행히

같은 패키지(lazz.study)안에 있으니 상관 없지만, 다른 패키지(예를 들면

lazz.test라든지....모..기타 등등...)에 있으면 MyClass를 import할 수 없습니다.

이렇게 다른 패키지에 있는 클래스를 사용하기 위해선 public선언을 꼭 해주시고,

또 한가지 중요한 것은 생성자 역시 public을 해 주어야 합니다.

class MyClass{
  String str;
  public void MyClass()
  .......
}

위를 보시면 MyClass는 그냥 package선언이 되어 있고, 그 생성자인

public void MyClass()는 public선언이 되어 있습니다.

이것은 어불 성설이 될 수 있죠.

그 이유가, 어차피 MyClass는 public이 붙지 않아서 다른 패키지의 클래스에서는

사용할 수가 없는데 그 생성자인 MyClass()는 public을 붙여 놓는다는건

불필요한 일이죠. 그냥 public빼시고, void MyClass()해주시면 됩니다.

(사실 public붙이나 마나 실제 돌아갈땐 차이는 없죠.)

하지만, 다음 경우를 생각해 볼 수 있습니다.

lazz.test란 패키지에 있는 MyTest란 클래스에서 lazz.study패키지에 있는

MyClass를 사용하려 할때..

물론 MyClass패키지는 public 선언이 되어 있어야죠.

그런데 생성자인 MyClass가 public이 안 붙어 버린다면 이것 역시

같은 패키지 안에서만 호출이 가능하므로, 아예 MyClass객체를 만들 수가 없는

것이죠. 따라서 이런 경우는 class선언시와 생성자 선언시에 둘다

public붙여 주세요.

마찬 가지로 다른 모든 메소드나 인스턴스에 관해서도 적용됩니다.

c:\lazz\study\Start.java 가 있으면
c:\javac .\lazz\study\Start.java 하시라는 말씀이죠?
Can't file read라는 에러가(파일 못찾음) 나오네요.

위에서 Start.java는 package lazz.study; 이렇게 선언하셨죠?

그렇담, 

c:\javac -d . \lazz\study\Start.java

이렇게 해 보세요.

만약 위처럼 해도 안 되면, 환경 변수 문제인듯 싶네요.

사실 Start.java는 lazz\study디렉토리에 있을 필요는 없죠.

거기엔 .class파일이 있으면 됩니다.


                                               * 빗속에서 영화처럼....
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.