Étendre une classe java à partir 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'autre Student.java . Comment puis-je inclure Person.java en Student.java afin que je puisse étendre la classe de Person.java dans Student.java

55
demandé sur flurbius 2009-05-19 05:58:31

4 réponses

vient de mettre 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;
  }
}

de l'É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);
  }
}

étudiant courant (puisqu'il a la fonction principale) nous donne le résultat désiré:

Your name is foo
My name is boo  surprise!
58
répondu Chris Bunch 2009-05-19 02:07:22

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

venant pour C / C++, j'ai exactement le même problème. La réponse est de créer une nouvelle classe (dans un nouveau fichier de correspondance nom de la classe) et créer une chaîne publique. Ce sera votre "tête" du fichier. Puis utilisez cela 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éer un autre fichier, disons, utilisateur.Java. Dans ce fichier, mettez:

    import java.io.*;
    
    public class User extends Include {
        System.out.println(Include.MyLongString);
    }
    
24
répondu FractalSpace 2012-06-25 11:58:17

Java n'est pas l'utilisation comprend la façon dont C fait. Java utilise plutôt un concept appelé classpath, une liste de ressources contenant des classes java. La JVM peut accéder à n'importe quelle classe sur classpath par son nom, donc si vous pouvez étendre des classes et vous référer à des types simplement en les déclarant. La chose qui ferme à une déclaration d'inclusion que java A est'importer'. 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, alors vous devez utiliser une déclaration d'importation au début de votre fichier java comme si: import foo.bar.Baz

19
répondu Jherico 2009-05-19 02:27:43

vous ne le faites pas.

si vous voulez étendre personne avec L'étudiant, faites juste:

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?

2
répondu Pablo Santa Cruz 2009-05-19 02:00:51