【问题标题】:Advantages to using packages in Java? [closed]在 Java 中使用包的优势? [关闭]
【发布时间】:2015-04-17 18:03:57
【问题描述】:

作为一名学生,我开始深入研究 Java 编程语言并了解面向对象编程的好处。但是,我注意到我从来没有利用过使用包。

我的问题是在 Java 中使用包有什么好处?有什么缺点?我什么时候应该使用它们,什么时候不应该使用它们?

【问题讨论】:

  • 你可以创建一个名为AwesomClass的类,我可以创建一个名为AweomeClass的类,如果它们驻留在不同的包中,它们可以一起驻留在同一个VM中,否则,你有一个名字冲突。包提供命名上下文。 (还有一些围绕基本包名称空间的安全管理)
  • Google 上有很多资料。
  • @MadProgrammer 感谢您的评论,这对于可以具有相同名称但驻留在可能包含不同含义的不同包中的类的分类现在很有意义。至于安全管理,有没有办法让一个包访问另一个包中的内容?说我的AwesomClass 试图访问你的AwesomClass
  • 安全机制与核心api有关,即不能使用java.lang包命名空间等,这样可以保护核心api

标签: java oop packages


【解决方案1】:

什么是包?

包是一个命名空间,它组织了一组相关的类和 接口。从概念上讲,您可以将包视为类似于 计算机上的不同文件夹。您可以将 HTML 页面合二为一 文件夹,另一个中的图像,以及另一个中的脚本或应用程序。 因为用 Java 编程语言编写的软件可以 它由数百或数千个单独的类组成,它使 通过放置相关的类和 接口到包中。

Reference

通常我们使用包来解决命名冲突。在 java API 本身中,您会发现类共享相同的名称。例如Date 类。 Java API 有java.util.Datejava.sql.Date

编辑

在一个组织中,发展不是一个人的工作。有时项目/产品被分成几个小部分,由其他几个独立/外包团队完成。在这种情况下,开发人员可能不知道类/接口的存在。

除此之外,假设你有一个类Account,它已经在包中定义了,你需要更多的功能。现在,由于它已经在使用中,因此不允许对其进行更改。在这里,您只剩下几个选项,其中创建一个新类是一个简单的选项。

【讨论】:

  • 使用同一个类但在不同包中的目的是什么?
  • 独立的模块可以相互交互,但更加结构化。
【解决方案2】:

各种优点是(source):

(1) 包可以包含包使用的隐藏类,但 在包外不可见或无法访问。

(2) 包中的类可以具有所有人可见的字段和方法 类在包内,但不在包外。

(3) 不同的包可以有同名的类。例如, java.awt.Frame 和 photo.Frame。

您可以google 了解更多信息。

【讨论】:

    【解决方案3】:

    包解决了同名类的歧义。

    使用它们在项目中提供适当的结构,以便项目中的每个人都可以理解我必须在 com.deep.controller 包中编写的所有控制器以及我必须在 com.deep.dao package 中编写的所有 DAO 相关类。

    【讨论】:

      【解决方案4】:

      人们在 java 中使用包可能有多种原因;但就个人而言,我想提三个最重要的。

      1. 代码重用是我在 java 中使用包的第一个也是最重要的原因。 继承概念允许您获取父对象的所有属性和行为。这意味着您可以基于现有类创建新类。从现有类继承时,可以重用父类的方法和字段。 简而言之,您可以通过将编写代码的属性继承到代码的其他部分来重用编写代码的功能。 当我在 Java 中处理一些项目时,其中一些方法(在 C++ 中也称为函数)几乎相同。 重写这些方法可能是浪费时间;最好的选择是重用代码的功能并仅更改参数或某些值。 因此,由于包是相关类的集合,当您想要执行类似任务时,重用某些代码的功能变得更加容易。您只需导入包并使用该类。

      2. 其次,使用包可以更轻松地定位相关类。 这与您的代码的组织方式有关。 例如,在我们有数百个类的大型 java 项目中,总是需要将相似类型的类分组到一个包中,以便您可以组织和管理您的项目;这样可以更轻松地定位相关类,从而提高效率。

      3. 我在 java 中使用包的第三个也是最后一个原因是为了防止命名冲突。 我们可以在不同的包中定义两个同名的类。 因此,为了避免名称冲突,我们可以使用包。

      【讨论】:

      • 如果您在第一个项目符号号(1.)上方放置一个空行,它将自动显示在列表中。
      猜你喜欢
      • 2011-04-20
      • 2016-05-14
      • 2010-12-18
      • 1970-01-01
      • 2014-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-20
      相关资源
      最近更新 更多