Расширить класс Java из одного файла в другом файле Java - PullRequest
55 голосов
/ 19 мая 2009

Как я могу включить один файл Java в другой файл Java?

Например: Если у меня есть 2 файла Java, один называется Person.java, а другой - Student.java. Как я могу включить Person.java в Student.java, чтобы я мог расширить класс с Person.java в Student.java

Ответы [ 4 ]

60 голосов
/ 19 мая 2009

Просто поместите два файла в один каталог. Вот пример:

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!
26 голосов
/ 17 сентября 2009

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

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

3 голосов
/ 19 мая 2009

Вы не.

Если вы хотите продлить Person with Student, просто наберите:

public class Student extends Person
{
}

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

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

...