65 votes

Extension d'une classe java d'un fichier dans un autre fichier java

Comment puis-je inclure un fichier java dans un autre fichier java ?

Par exemple : Si j'ai 2 fichiers java, l'un s'appelle Person.java et l'un d'eux s'appelle Student.java . Comment puis-je inclure Person.java en Student.java afin que je puisse étendre la classe de Person.java en Student.java

74voto

Chris Bunch Points 25857

Il suffit de placer les deux fichiers dans le même répertoire. Voici un exemple :

Personne.java

public class Person {
  public String name;

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

  public String toString() {
    return name;
  }
}

Étudiant.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);
  }
}

L'exécution de Student (puisqu'il a la fonction principale) nous donne le résultat souhaité :

Your name is foo
My name is boo  surprise!

8 votes

N'avez-vous pas besoin d'une sorte de déclaration d'importation en haut de Student.java ? A quoi ressemble cette déclaration d'importation ?

7 votes

@AndrewM.Farrell Non, une déclaration d'importation n'est pas nécessaire. Placez simplement les fichiers dans le même répertoire et compilez-les. Ils seront capables de se "voir" mutuellement sans problème.

32voto

FractalSpace Points 739

Ce qui manque dans toutes les explications est le fait que Java a une règle stricte de nom de la classe = nom du fichier . Cela signifie que si vous avez une classe "Personne", elle doit se trouver dans un fichier nommé "Personne.java". Par conséquent, si une classe essaie d'accéder à "Personne", le nom du fichier n'est pas nécessaire, car il doit être "Personne.java".

Pour ce qui est du C/C++, j'ai exactement le même problème. La réponse est de créer une nouvelle classe (dans un nouveau fichier correspondant au nom de la classe) et de créer une chaîne publique. Ce sera votre fichier "header". Ensuite, utilisez-le dans votre fichier principal en utilisant le mot-clé "extends".

Voici votre réponse :

  1. Créez un fichier appelé Include.java. Dans ce fichier, ajoutez ceci :

    public class Include {
        public static String MyLongString= "abcdef";
    }
  2. Créez un autre fichier, disons, User.java. Dans ce fichier, mettez :

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

22voto

Jherico Points 12554

Java n'utilise pas les includes comme le fait le C. À la place, Java utilise un concept appelé classpath, une liste de ressources contenant des classes Java. La JVM peut accéder à n'importe quelle classe du classpath par son nom, de sorte que vous pouvez étendre des classes et faire référence à des types simplement en les déclarant. La chose qui se rapproche le plus d'une déclaration d'inclusion en Java est l'importation. Puisque les classes sont divisées en espaces de noms comme foo.bar.Baz, si vous êtes dans le paquet qux et que vous voulez utiliser la classe Baz sans avoir à utiliser son nom complet de foo.bar.Baz, vous devez utiliser une déclaration d'importation au début de votre fichier java comme suit : import foo.bar.Baz

5voto

Pablo Santa Cruz Points 73944

Tu ne le fais pas.

Si vous voulez étendre Person avec Student, faites-le :

public class Student extends Person
{
}

Et assurez-vous que, lorsque vous compilez les deux classes, l'une peut trouver l'autre.

Quel IDE utilisez-vous ?

0 votes

Avant de faire les extensions pour ma classe publique, ne dois-je pas inclure le fichier pour Person dans Studnet 1st ? Connaissez-vous la déclaration d'inclusion de fichier en java ? Par exemple en php la déclaration est include('directoty/file_name') ;

0 votes

Salut Jin. Non, vous n'avez pas besoin d'"inclure" le fichier pour la personne. Il suffit d'étendre la classe. Si les classes ne sont pas dans le même paquetage, vous "importez" la classe. Mais il n'est pas nécessaire d'inclure le fichier. En fait, vous ne pouvez pas le faire. Même si vous le voulez. Utilisez-vous une sorte d'IDE ? Eclipse ? Netbeans ?

0 votes

C'est automatique si les classes sont dans le même package (y compris les packages par défaut pour les fichiers sources qui n'ont pas de package explicite).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X