`
Zhongwei_leg
  • 浏览: 557691 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

如何使用其他 java 文件里定义的类

    博客分类:
  • Java
阅读更多

在同一个目录下定义两个类:

 

Main.java

 

public class Main{                                                                                                                                                         
    public static void main(String[] args){
        System.out.println("main()");

        Person zhongwei = new Person("zhongwei");
        System.out.println(zhongwei.name);
    }
}

 

Person.java

 

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

 

在该目录下执行:

 

javac Main.java
 

 

我会看到,该目录下的文件由 2个变为了 4 个:

 

Sun-Zhongweis-MacBook-Pro:test_multi_class zhongwei$ ls -la
total 32
drwxr-xr-x  6 zhongwei  staff  204 Jun 13 17:43 .
drwxr-xr-x  3 zhongwei  staff  102 Jun 13 17:19 ..
-rw-r--r--  1 zhongwei  staff  510 Jun 13 17:31 Main.class
-rw-r--r--  1 zhongwei  staff  203 Jun 13 17:31 Main.java
-rw-r--r--  1 zhongwei  staff  269 Jun 13 17:31 Person.class
-rw-r--r--  1 zhongwei  staff   98 Jun 13 17:31 Person.java
 

执行:

java Main

 

输出为:

 

Sun-Zhongweis-MacBook-Pro:test_multi_class zhongwei$ java Main
main()
zhongwei

 

对比 Python 来看,java 使用同目录下的不同文件的类时,不需要 import 那个文件的名字,直接使用即可。

 

猜测,java 会自动导入一个 path 列表中的所有文件定义的类,而当期目录是默认自动导入的。 

 

几个疑问:

1。类名前的这个 public 的作用?

一个类要在另外一个文件中被调用,定义时一定要加上 public 么?

 

在网上搜到这样一段话:

 

文件名要与public类同名、一个文件只能有一个public类、可以有其它类的声明。不一定非要声明成内部类。不建议一个文件内声明两个类,除非客观需要那样
 

我修改了一下 Person.java 的代码,将 public 删掉。同时删除之前生产的两个 .class 文件,重新执行 javac Main.java.

再运行 java Main

执行结果同之前的一样。也就是说,不加这个 public 也可以。再去掉 Main.java 中的 public,也没有影响。。。

 

娃哈哈哈哈。。。Google 了半天终于找到一个解释了

 

 写道
http://xahlee.org/java-a-day/access_specifiers.html

For classes, only the “public” access specifier can be used on classes. Basically, Java has this “One Class Per File” paradigm. That is, in every java source code file, only one class in the file is public accessible, and that class must have the same name as the file. (For Example, if the file is 〔xyz.java〕, then there must be a class named “xyz” in it, and that is the class that's public.) Optionally, the class can be declared with “public” keyword.

If you use any other access specifier on classes, or declare more than one class “public” in a file, the compiler will complain.

 

也就是说,凡是与 java 文件同名的类,即使不加上 public,他也是 public 类型的。但是这种解释没有 Thinking In Java 中的有说服了,即, 不加 public 前缀的 Class 是 friendly 的,只能在同 package 中可见。

 

 

之所以每个 java 源文件要有一个与文件同名的类,是为了方便编译器查找方便,提高编译速度。

 

若没有任何 public class,则该文件名可以随意起。

 

2. 如何导入其他文件夹的类?

估计和 Python 一样,把目标目录加入搜索路径即可。然后 import。

 

分享到:
评论

相关推荐

    JAVA定义学生类

    根据给定的文件信息,我们可以总结出以下关于Java编程语言中的类定义、对象创建与使用的相关知识点: ### 1. 类的基本定义 在Java中,类是用于定义对象的蓝图,它包含了一系列属性(成员变量)和方法(成员函数)...

    完整的java文件读写工具类

    本篇将详细讲解标题为"完整的java文件读写工具类"所涉及的核心知识点,以及如何实现描述中提到的文件与目录管理功能。 1. **Java IO基础**: Java IO是Java标准库中的核心部分,提供了处理输入/输出流的类。在`...

    把wsdl文件转换成java类 使用wsdl2Java工具

    为了在Java环境中与这些Web服务交互,我们需要将WSDL文件转换为Java类,这就是`wsdl2java`工具的作用。 `wsdl2java`是Apache Axis项目的一部分,它是一个强大的工具,可以自动生成Java客户端和服务端代码,这些代码...

    JAVA类的定义txt格式

    在提供的代码中,我们看到了一个名为`Account`的类被定义为公共(`public`)可见性,这意味着该类可以在任何其他类中访问。 ```java public class Account { //... } ``` #### 属性声明 类中的属性也被称为字段...

    java 动态编译.java文件,动态运行类

    3. **设置编译任务**:创建一个`JavaFileObject`实例表示要编译的.java文件,然后使用`Iterable<JavaFileObject>`集合来包含这些文件。接下来,定义编译任务的选项,如源和目标版本。 ```java List<JavaFileObject> ...

    JAXB 利用xsd文件生成java类

    - **编译XSD到Java类**:使用JAXB的`xjc`工具,可以将XSD文件转换为Java源代码。`xjc`命令行工具通常包含在JDK中,也可以通过Maven或Gradle插件集成到构建流程中。 - **绑定配置**:通过在XSD文件中添加特殊的JAXB...

    JAVA解析DBC文件

    JAVA的标准库提供了`java.nio.ByteOrder`类来处理这个问题,可以根据DBC文件中的定义来调整数据的读取顺序。 接下来,解析出的信号、帧和节点信息可以映射到JAVA对象中。例如,可以创建一个`Node`类表示CAN总线上的...

    java远程传输文件

    代码中定义了一个download类,用于下载远程文件。download类中包含了多个方法,用于确定文件是否已经下载,但没有下载完成、确定已经下载的文件大小、将下载完全的文件更名等。 2. URL和HttpURLConnection 代码中...

    protobuf文件定义及转化为java对象

    定义protobuf文件(包含enum,message,required,optional,repeated, 结构体定义中引用另一个结构体), 生成java文件,能够构建java对象,并转化为字节byte或者流,能够将流或字节转化为对象

    java 使用 JAXB 将xml转换为 bean 包含xml和dto和读取文件的util类

    1. **定义Java Bean类**:首先,我们需要创建一个Java类,该类的属性对应于XML文件中的元素。这些属性通常用`@XmlElement`注解,表示它们将被映射到XML元素。如果属性是集合类型,可以使用`@XmlElementWrapper`和`@...

    JAVA 显示文件目录(像windows的资源管理器一样)

    JAVA 显示文件目录(像windows的资源管理器一样) 这个程序是使用 JAVA 语言编写的,目的是为了显示文件...这个程序使用了 JAVA 的 Swing 库和 File 类来创建图形用户界面和遍历文件目录,展示了 JAVA 的强大功能。

    xml文件自动转成java对象工具

    XSD文件转Java工具能够基于XSD文件生成对应的Java类,这些类包含了与XSD定义的元素和属性相对应的字段和方法。 转换过程通常包括以下步骤: 1. **解析XSD文件**:工具首先读取XSD文件,分析其元素、属性、类型定义...

    Java文件的拆分与合并.pdf

    Java文件的拆分与合并 一、Java文件的拆分 Java文件的拆分是指将一个大的Java文件分割成多个小的文件,以便于更好地管理和维护。在上述代码中,我们可以看到,作者使用了Java的文件操作类库来实现文件的拆分...

    把wsdl文件或地址转化成java代码工具

    5. MyEclipse会解析WSDL文件,生成对应的Java源代码,包括服务接口和服务代理类等,这些类可以直接在项目中使用。 【标签】:“wsdl文件 转化 Java代码 工具” 转换WSDL文件为Java代码的工具有很多,除了MyEclipse...

    java实现文件批量上传

    在Java开发中,文件批量上传是一项常见的功能,尤其在企业级应用中,用户可能需要上传大量数据或文件。本教程将介绍如何利用SWF(Simple Workflow)和EXT库来实现这一功能。SWF是一个用于创建富互联网应用程序的前端...

    java class文件编译

    Java源代码(.java文件)在经过Java编译器(javac)处理后,会生成对应的Class文件。Class文件采用一种特殊的二进制格式,这种格式具有固定结构,主要包括以下几个部分: 1. 魔数:标识文件为Java类文件,固定为0...

    JAVA_API1.6文档(中文)

    javax.xml.bind.annotation.adapters XmlAdapter 及其规范定义的子类允许任意 Java 类与 JAXB 一起使用。 javax.xml.bind.attachment 此包由基于 MIME 的包处理器实现,该处理器能够解释并创建基于 MIME 的包格式的...

    java文件监控例子

    标题中的"java文件监控例子"就是关于如何使用JNotify来实现文件监控的示例。 JNotify库的核心在于提供了一个简单的API,让开发者能够轻松注册对特定文件或目录的监听,并在这些文件或目录发生变化时接收到回调通知...

    java源码包---java 源码 大量 实例

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    java上传文件接口调用源码案例

    在这个“java上传文件接口调用源码案例”中,我们将探讨Java如何通过HTTP或者HTTPS协议来上传文件,以及如何使用`UrlUtils.java`这样的工具类。 首先,让我们了解一下接口调用的基本概念。接口是一种约定,定义了两...

Global site tag (gtag.js) - Google Analytics