2009-05-19 8 views

Odpowiedz

57

Po prostu umieść dwa pliki w tym samym katalogu. Oto przykład:

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); 
    } 
} 

Running Student (ponieważ posiada funkcję main) daje nam pożądany efekt:

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

Czy nie potrzebujesz jakiegoś importu na górze Student.java? Jak wygląda ta instrukcja importu? –

+4

@ AndrewM.Farrell Nie, instrukcja importu nie jest konieczna. Po prostu umieść pliki w tym samym katalogu i skompiluj je. Będą w stanie "widzieć" się nawzajem. – ApproachingDarknessFish

2

Nie robisz tego.

Jeśli chcesz przedłużyć osoba z Studenta, po prostu zrobić:

public class Student extends Person 
{ 
} 

I upewnij się, podczas kompilowania obu klas, można znaleźć drugą.

Jakiego IDE używasz?

+0

Przed zrobić rozciąga się na moim publicznym klasy, mnie nie trzeba w tym pliku dla osoby do studnet 1? Czy znasz instrukcję dołączania pliku do java? Na przykład w php, do tytułu dołączono ('directoty/file_name'); –

+0

Cześć Jin. Nie, nie musisz "dołączać" pliku do Osoby. Po prostu rozszerzasz klasę. Jeśli klasy nie znajdują się w tym samym pakiecie, "importujesz" klasę. Ale nie ma potrzeby dołączania pliku. W rzeczywistości nie możesz tego zrobić. Nawet jeśli chcesz. Czy używasz jakiegoś IDE? Zaćmienie? Netbeans? –

+0

Jest automatyczne, jeśli klasy są w tym samym pakiecie (w tym pakiety domyślne dla plików źródłowych, które nie mają jawnego pakietu). –

19

Java nie używa sposobu C. Zamiast tego java używa pojęcia zwanego classpath, listy zasobów zawierających klasy java. JVM może uzyskać dostęp do dowolnej klasy w ścieżce klasy po nazwie, więc jeśli możesz rozszerzyć klasy i odwołać się do typów po prostu deklarując je. Rzeczą zamykającą dla instrukcji include jest "import". Ponieważ klasy są podzielone na przestrzenie nazw takie jak foo.bar.Baz, jeśli jesteś w pakiecie qux i chcesz używać klasy baz bez konieczności używania jej pełnej nazwy foo.bar.Baz, musisz użyć oświadczenie import na początku pliku java tak: import foo.bar.Baz

23

Czego brakuje ze wszystkich wyjaśnień jest to, że Java ma ścisłe reguły nazwa class = nazwa pliku. Znaczenie, jeśli masz klasę "Osoba", musi znajdować się w pliku o nazwie "Person.java". Dlatego jeśli jedna klasa próbuje uzyskać dostęp do "Osoby", nazwa pliku nie jest konieczna, ponieważ musi to być "Person.java".

Jadąc na C/C++, mam dokładnie ten sam problem. Odpowiedź brzmi: utwórz nową klasę (w nowej nazwie klasy dopasowania do pliku) i utwórz publiczny ciąg. To będzie plik "nagłówka". Następnie użyj tego w głównym pliku, używając słowa kluczowego "extends".

Oto odpowiedź:

  1. Utwórz plik o nazwie Include.java. W tym pliku dodaj:

    public class Include { 
        public static String MyLongString= "abcdef"; 
    } 
    
  2. Utwórz inny plik, na przykład User.java.W tym pliku umieścić:

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

dzięki uratowałem mój dzień –