2009-05-19 3 views
55

Как я могу добавить один java-файл в другой Java-файл?Расширить класс java из одного файла в другом java-файле

Например: Если у меня есть 2 файла java, один называется Person.java, а один называется Student.java. Как включить Person.java в Student.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); 
    } 
} 

Запуск Student (так как он имеет главную функцию) дает нам желаемый результат:

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

Вам не нужен какой-то оператор импорта наверху Student.java? Как выглядит оператор импорта? –

+4

@ AndrewM.Farrell Нет, инструкция импорта не требуется. Просто поместите файлы в один каталог и скомпилируйте их. Они смогут «отлично видеть» друг друга. – ApproachingDarknessFish

2

У вас нет.

Если вы хотите продлить Человек с Студента, просто сделать:

public class Student extends Person 
{ 
} 

И убедитесь, при компиляции обоих классов, можно найти другую.

Какие IDE вы используете?

+0

Перед тем, как сделать распространяется для моего общественного класса, не мне нужно, включая файл для лица в 1 Studnet? Вы знаете инструкцию для include файла в java? Например, в php statment включает ('directoty/file_name'); –

+0

Привет Цзинь. Нет, вам не нужно «включать» файл для Person. Вы просто расширяете класс. Если классы не находятся в одном пакете, вы «импортируете» класс. Но нет необходимости включать файл. На самом деле вы не можете этого сделать. Даже если вы этого захотите. Вы используете какую-то IDE? Затмение? Netbeans? –

+0

Это автоматически, если классы находятся в одном пакете (включая пакеты по умолчанию для исходных файлов, которые не имеют явного пакета). –

19

Java не использует способ C. Вместо этого java использует концепцию, называемую classpath, список ресурсов, содержащих классы Java. JVM может получить доступ к любому классу в пути к классам по имени, поэтому, если вы можете расширять классы и ссылаться на типы, просто объявляя их. Завершает работу с оператором include. Java имеет «import». Поскольку классы разбиваются на пространства имен, такие как foo.bar.Baz, если вы находитесь в пакете qux и хотите использовать класс Baz, не используя полное имя foo.bar.Baz, тогда вам нужно использовать оператор импорта в начале файла Java как так: import foo.bar.Baz

23

Чего не хватает всех объяснений является то, что Java имеет строгое правило имя класса = имя файла. Значение, если у вас есть класс «Человек», должно быть в файле с именем «Person.java». Поэтому, если один класс пытается получить доступ к «Лицу», имя файла необязательно, поскольку оно должно быть «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

спасибо, спасли мой день –

Смежные вопросы