2009-05-19 7 views
55

하나의 Java 파일을 다른 Java 파일에 포함하려면 어떻게합니까?다른 Java 파일의 한 파일에서 Java 클래스 확장

예 : 내가 2 개의 java 파일을 가지고 있다면 하나는 Person.java이고 하나는 Student.java입니다. Person.javaStudent.java에 포함 시키면 클래스를 Person.java에서 Student.java

답변

57

두 파일을 같은 디렉토리에두기 만하면됩니다. 다음은 예입니다 :

Person.java는

public class Person { 
    public String name; 

    public Person(String name) { 
    this.name = name; 
    } 

    public String toString() { 
    return name; 
    } 
} 

Student.java

public class Student extends Person { 
    public String somethingnew; 

    public Student(String name) { 
    super(name); 
    somethingnew = "surprise!"; 
    } 

    public String toString() { 
    return super.toString() + "\t" + somethingnew; 
    } 

    public static void main(String[] args) { 
    Person you = new Person("foo"); 
    Student me = new Student("boo"); 

    System.out.println("Your name is " + you); 
    System.out.println("My name is " + me); 
    } 
} 

실행 학생 (는 주요 기능이 있기 때문에) 우리가 원하는 결과를 얻을 수 :

Your name is foo 
My name is boo surprise! 
+4

Student.java 상단에 import 문이 필요하지 않습니까? 그 import 문은 어떻게 생겼을까요? –

+4

@ AndrewM.Farrell 아니요. import 문은 필요하지 않습니다. 파일을 같은 디렉토리에두기 만하면됩니다. 그들은 서로를 "볼"수있을 것입니다. – ApproachingDarknessFish

2

으로 확장 할 수 있습니다.

당신이 학생으로 사람을 확장하려는 경우

, 그냥 할 : 당신이 두 클래스를 컴파일 할 때

public class Student extends Person 
{ 
} 

그리고 확인, 하나는 다른 하나를 찾을 수 있습니다.

어떤 IDE를 사용하고 있습니까?

+0

내 공용 클래스에 대한 확장 할 전에, 내가이없는 Studnet 1 일에 사람의 파일을 포함하여? java에있는 include 파일에 대한 문장을 알고 있습니까? 예를 들어 PHP에서 statment는 include ('directoty/file_name')입니다. –

+0

안녕 진. 아니요, Person의 파일을 "포함"할 필요는 없습니다. 클래스를 확장하면됩니다. 클래스가 동일한 패키지에 없으면 클래스를 가져옵니다. 그러나 파일을 포함 할 필요가 없습니다. 사실, 당신은 그렇게 할 수 없습니다. 네가 원한다고해도. IDE를 사용하고 있습니까? 식? 넷빈즈? –

+0

클래스가 동일한 패키지 (명시 적 패키지가없는 소스 파일의 기본 패키지 포함)에 있으면 자동입니다. –

19

자바는 C가하는 방식을 포함하지 않습니다. 대신 Java는 classpath라는 개념을 사용합니다.이 개념은 Java 클래스를 포함하는 자원의 목록입니다. JVM은 클래스 경로의 모든 클래스에 이름으로 액세스 할 수 있으므로 클래스를 확장하고 유형을 선언함으로써 간단하게 유형을 참조 할 수 있습니다. include 문에서 java has가 '가져 오기'를 종료합니다. 클래스는 foo.bar.Baz와 같은 네임 스페이스로 나뉘어져 있기 때문에, qux 패키지에 있고 foo.bar.Baz의 전체 이름을 사용하지 않고도 Baz 클래스를 사용하려면, 그래서 같은 자바 파일의 시작 부분에서 import 문 : import foo.bar.Baz

23

무엇 모든 설명에서 빠진 것은 자바 클래스 이름 = 파일 이름의 엄격한 규칙을 가지고 있다는 사실이다. 클래스 "Person"이있는 경우 의미는 "Person.java"라는 파일에 있어야합니다. 따라서 한 클래스가 "Person"에 액세스하려고하면 "Person.java"가되어야하므로 파일 이름이 필요하지 않습니다.

C/C++에서 제공되는 똑같은 문제가 있습니다. 대답은 (클래스 이름과 일치하는 새 파일에서) 새 클래스를 작성하고 공용 문자열을 작성하는 것입니다. 이것은 "헤더"파일이 될 것입니다. 그런 다음 "extends"키워드를 사용하여 주 파일에서 사용하십시오.

  1. 이 Include.java라는 파일을 만듭니다

    여기 당신의 대답이다. 이 파일에 다음을 추가하십시오.

    public class Include { 
        public static String MyLongString= "abcdef"; 
    } 
    
  2. 다른 파일, 예를 들어 User.java를 작성하십시오.이 파일에 넣어 :

    import java.io.*; 
    
    public class User extends Include { 
        System.out.println(Include.MyLongString); 
    } 
    
+1

감사합니다. –

관련 문제