【问题标题】:Extend a java class from one file in another java file在另一个 java 文件中从一个文件扩展一个 java 类
【发布时间】:2010-10-27 05:03:04
【问题描述】:

如何将一个 java 文件包含到另一个 java 文件中?

例如: 如果我有 2 个 java 文件,一个名为 Person.java,一个名为 Student.java。如何将Person.java 包含到Student.java 中,以便我可以从Person.java 中扩展Student.java 中的类

【问题讨论】:

    标签: java import include


    【解决方案1】:

    只需将两个文件放在同一个目录中即可。这是一个例子:

    Person.java

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

    学生.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);
      }
    }
    

    Running Student(因为它具有 main 功能)为我们提供了预期的结果:

    Your name is foo
    My name is boo  surprise!
    

    【讨论】:

    • 您不需要在 Student.java 的顶部添加某种导入语句吗?那个 import 语句是什么样的?
    • @AndrewM.Farrell 不,不需要导入声明。只需将文件放在同一目录中并编译它们。他们将能够很好地“看到”对方。
    【解决方案2】:

    所有解释中都缺少一个事实,即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);
      }
      

    【讨论】:

      【解决方案3】:

      Java 不像 C 那样使用包含。相反,java 使用了一个名为 classpath 的概念,一个包含 java 类的资源列表。 JVM 可以通过名称访问类路径上的任何类,因此如果您可以扩展类并简单地通过声明它们来引用类型。 java 包含语句的关闭是'import'。由于类被分解为像 foo.bar.Baz 这样的命名空间,如果你在 qux 包中并且你想使用 Baz 类而不必使用它的全名 foo.bar.Baz,那么你需要使用在您的 java 文件开头的 import 语句如下所示: import foo.bar.Baz

      【讨论】:

        【解决方案4】:

        你没有。

        如果你想用 Student 扩展 Person,只需:

        public class Student extends Person
        {
        }
        

        并确保在编译这两个类时,一个可以找到另一个。

        您使用的是什么 IDE?

        【讨论】:

        • 在我为我的公共课程进行扩展之前,我不需要将 Person 的文件包含到 Studnet 1st 中吗?你知道java中包含文件的语句吗?例如在 php 中的语句是 include('directoty/file_name');
        • 嗨金。不,您不需要“包含”Person 的文件。你只是扩展类。如果类不在同一个包中,则“导入”该类。但是没有必要包含该文件。事实上,你不能那样做。即使你想。你在使用某种 IDE 吗?蚀?网豆?
        • 如果类在同一个包中是自动的(包括没有显式包的源文件的默认包)。
        • 没有。 Java 将在您的 [Classpath][1] 中查找该类。如果它在同一个目录中,并且您没有使用包,那么它会找到它。 [1]:en.wikipedia.org/wiki/Classpath_%28Java%29
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多