Java的Package到底是啥概念
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java的Package到底是啥概念相关的知识,希望对你有一定的参考价值。
package是名称前缀,xxx.xxx.xxx.User;就像外国人的姓名一样分很多段,既能区分出各种重名的class,比如有好几个不同项目里都有User。也可以用来分类,好辨认。
import
xxx.xxx.xxx.User之后,代码里只要简写User,程序就知道它的全名了,从import里找。
如果一段代码里出现了两个不同的User,那就不能靠import了,就得写完整名称来
new
xxx.xxx.xxx.User() 参考技术A 其实就是把class放在不同的文件夹下,一层层的文件夹下用点号隔开来,这个就是package,不同的文件下你可以定义名字一样的类,只是为了便于分类和管理啦 参考技术B 1:
-package语句必须是文件中的第一条语句.也就是说.在package语句之前,除了空白和注释之外不能有任何语句.
-如果不加package则指定为缺省包或者无名包.
-包对应着文件系统的目录层次结构.
-在package语句中,用"."来指明包(目录)的层次.
在 Java 中,接收器到底是啥,或者接收器到底可以是啥?
【中文标题】在 Java 中,接收器到底是啥,或者接收器到底可以是啥?【英文标题】:In Java, what exactly is a receiver or what exactly can a receiver be?在 Java 中,接收器到底是什么,或者接收器到底可以是什么? 【发布时间】:2015-02-01 04:07:18 【问题描述】:我已经开始学习java了。到目前为止,我已经了解方法调用是:
object.methodname(arguments)
虽然我认为更广泛地说我发现它实际上是:
receiver.methodname(arguments)
并且接收者可能不一定是对象。或者我对对象的理解是错误的。我知道一个类定义了一个类型,而一个对象是该类的一个实例。调用方法就是向对象发送消息,并且该消息必须是对象能够理解的,由其类中的方法定义。
但是……怎么样:
import java.lang.Math
double x = 16;
double y = Math.sqrt(x);
double z = Math.pow(x,y);
数学是一个对象吗?我不相信。到目前为止,我的理解是 Math 是 java.lang 包中的一个“包类”。我还没有真正理解什么是“包类”,除了它是我可以使用的某种预先编写的函数库......
但如果它是一个类,那么这意味着有时接收器可以是一个类,而不必一定是一个对象...?
...还是 Math 是某个其他类的对象/实例?
我已经用谷歌搜索了所有我能想到的 java/receiver/object/class/etc 组合,但找不到任何能真正为我解决这个问题的地方。任何人都可以为我提供任何见解来澄清它,我将不胜感激。
谢谢!
【问题讨论】:
Math.sqrt
是一个static
方法。请参阅 Java 教程 中的Understanding Class Members。
接收者接收对其方法之一的调用的事物。它可以是一个包或一个对象。
感谢您的回复。
【参考方案1】:
数学是一门课!但这些是静态方法 :) 这意味着 Math 不需要被实例化为要使用的对象。你直接用就行了。
包只是组织/分类类的方法。
“接收者”在 Java 和 O.O. 中并不常见。
【讨论】:
好吧,这个在类中使用方法的概念真的让我很震惊。听起来您说这不一定是因为 Math 是某种特殊的类,但是任何类都可以具有可以通过该类调用的“静态”方法,而无需将其实例化为要使用的对象。虽然,更多的谷歌搜索似乎表明 Math 实际上是一种特殊的类 - 一个静态类(尽管这个词似乎是“最终的”而不是“静态的”?) - 只包含静态成员。实例化这样的类并没有真正的意义,这可以适应。我得到了吗?谢谢! 你在正确的轨道上。每个 Java 关键字都有一些特别之处。“final”只是意味着 Math 不能被继承。请注意,“public final class Math”是该类的定义:只有它的方法是静态的。还要考虑到静态类只是实用程序/帮助器,它们不是对象.. 不要在 O.O. 中给予它们那么重要。世界。 Luís,我想出了我之前所说的关于静态类的内容,来自绿色勾选的答案:link,但现在意识到我误读了它。他正在描述如何模拟其他语言称为静态类的东西,而“声明 ...final"
位(以阻止它被继承)只是其中的步骤之一。在他的解释之间你的现在很有意义,非常感谢你。如果可以的话,我会投票给你,但我是新来的,显然我还没有足够的“声誉”。;)
Javadoc for Class 方法 isAssignableFrom 将“对象”称为接收者。 "返回:true 参数可以赋值给接收者 false 参数不能赋值给接收者"以上是关于Java的Package到底是啥概念的主要内容,如果未能解决你的问题,请参考以下文章
在java中package javax servlet does not exist是啥意思
eclipse project explorer 里 一个Package上有红叉,但Package里的文件都没有红叉,这个红叉是啥原因