2009-05-19 5 views
55

Come posso includere un file java in un altro file java?Estendi una classe java da un file in un altro file java

Ad esempio: Se si dispone di 2 file java uno si chiama Person.java e uno si chiama Student.java. Come posso includere Person.java in Student.java in modo che io possa estendere la classe da Person.java a Student.java

risposta

57

Basta mettere i due file nella stessa directory. Ecco un esempio:

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

esecuzione Student (dal momento che ha la funzione principale) ci produce il risultato desiderato:

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

Non hai bisogno di una sorta di istruzione di importazione nella parte superiore di Student.java? Che aspetto ha questa dichiarazione di importazione? –

+4

@ AndrewM.Farrell No, non è necessaria una dichiarazione di importazione. È sufficiente posizionare i file nella stessa directory e compilarli. Potranno "vedersi" a vicenda. – ApproachingDarknessFish

2

Non è così.

Se si desidera estendere Persona con Studente, basta fare:

public class Student extends Person 
{ 
} 

E assicurarsi, quando si compila entrambe le classi, si può trovare l'altro.

Che IDE stai utilizzando?

+0

Prima di fare si estende per la mia classe di pubblico, non mi devo includere il file per la persona in primo Studnet? Conosci la dichiarazione per includere il file in java? Ad esempio in php la statistica è include ('directoty/file_name'); –

+0

Ciao Jin. No, non è necessario "includere" il file per Persona. Estendi semplicemente la classe. Se le classi non sono nello stesso pacchetto, "importa" la classe. Ma non è necessario includere il file. In realtà, non puoi farlo. Anche se lo vuoi. Stai usando una specie di IDE? Eclisse? Netbeans? –

+0

È automatico se le classi si trovano nello stesso pacchetto (compresi i pacchetti predefiniti per i file di origine che non hanno un pacchetto esplicito). –

19

Java non utilizza include il modo in cui C fa. Invece java usa un concetto chiamato classpath, un elenco di risorse che contengono classi java. La JVM può accedere a qualsiasi classe sul classpath per nome, quindi se è possibile estendere le classi e fare riferimento ai tipi semplicemente dichiarandoli. La cosa più vicina a un'istruzione include è java has 'import'. Poiché le classi sono suddivise in spazi dei nomi come foo.bar.Baz, se si è nel pacchetto qux e si desidera utilizzare la classe Baz senza dover utilizzare il nome completo di foo.bar.Baz, è necessario utilizzare un istruzione import all'inizio del file java in questo modo: import foo.bar.Baz

23

ciò che manca da tutte le spiegazioni è il fatto che Java ha una regola ferrea di class name = nome del file. Significato se hai una classe "Persona", deve essere in un file chiamato "Person.java". Pertanto, se una classe tenta di accedere a "Persona" il nome file non è necessario, perché deve essere "Person.java".

Disponibile in C/C++, ho lo stesso identico problema. La risposta è creare una nuova classe (in un nuovo file corrispondente al nome della classe) e creare una stringa pubblica. Questo sarà il tuo file "header". Quindi utilizzalo nel tuo file principale usando la parola chiave "extends".

Ecco la risposta:

  1. creare un file chiamato Include.java. In questo file, aggiungere questo:

    public class Include { 
        public static String MyLongString= "abcdef"; 
    } 
    
  2. Creare un altro file, ad esempio, User.java.In questo file, inserire:

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

grazie salvato la mia giornata –