在Java中使用包的优势?

在Java中使用包的优势?,java,oop,packages,Java,Oop,Packages,作为一名学生,我开始深入研究Java编程语言,了解面向对象编程的好处。但是,我注意到我从未利用过使用包 我的问题是在Java中使用包的优势是什么?缺点是什么?我应该什么时候用,什么时候不用 各种优点如下() (1) 包可以包含包使用的隐藏类,但这些隐藏类是 在包装外不可见或不可接近 (2) 包中的类可以具有所有类都可见的字段和方法 类位于包内,但不在包外 (3) 不同的包可以有同名的类。例如 java.awt.Frame和photo.Frame 你可以要求更多 包解决了同名类的歧义 使用它们在项

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

我的问题是在Java中使用包的优势是什么?缺点是什么?我应该什么时候用,什么时候不用

各种优点如下()

(1) 包可以包含包使用的隐藏类,但这些隐藏类是 在包装外不可见或不可接近

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

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


你可以要求更多

包解决了同名类的歧义

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

什么是包裹

包是组织一组相关类和 接口。从概念上讲,您可以认为包与 计算机上的不同文件夹。您可以将HTML页面保存在一个页面中 文件夹、另一个文件夹中的图像以及另一个文件夹中的脚本或应用程序。 因为用Java编程语言编写的软件可以 它由成百上千个单独的类组成,使 通过安排相关的课程和课程来保持事物的条理性 接口到包中

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

编辑

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


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

人们使用java包的原因可能有很多;但就我个人而言,我想提到三个最重要的问题

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

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

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


  • 您可以创建一个名为
    AwesomClass
    的类,我可以创建一个名为
    AweomeClass
    的类,如果它们驻留在不同的包中,那么它们可以一起驻留在同一个VM中,否则会出现名称冲突。包提供命名上下文。(基本软件包名称空间也有一些安全管理)谷歌上有很多资料。可能是@MadProgrammer的重复。谢谢你的评论,这对于可以有相同名称但驻留在不同软件包中的类的分类是有意义的,可能包含不同的含义。至于安全管理,有没有办法让一个包访问另一个包中的内容?假设我的
    AwesomClass
    尝试访问您的
    AwesomClass
    ?安全机制与核心api相关,即,您不能使用java.lang包名空间。例如,这可以保护核心api使用同一类的目的是什么,但在不同的软件包中,不同的模块可以相互交互,但结构更为复杂。如果在第一个项目符号编号(
    1.
    )上方放置一个空行,它将自动显示在列表中。