学习-Java类和对象之包的定义

第1关:学习-Java类和对象之包的定义


任务描述

本关任务:声明一个包,在另一个包中引用该包中的类。

相关知识

包的基本概述

在编写 Java 程序时,随着程序架构越来越大,类的个数也越来越多,这时就会发现管理程序中维护类名称也是一件很麻烦的事,尤其是一些同名问题的发生。有时,开发人员还可能需要将处理同一方面的问题的类放在同一个目录下,以便于管理。

为了解决上述问题,Java 引入了包(package)机制,提供了类的多层命名空间,用于解决类的命名冲突、类文件管理等问题。

简单理解:不同的城市之间存在相同名字的小区,用城市名则可以区分这些重名小区,城市名就可以理解为上面的包,小区则可以看做是重名的类,通过这个前缀,解决了重名问题。

包的作用如下:

  • 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用;

  • 如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突;

  • 包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类(后面的学习任务中会讲解访问权限)。

包的定义

Java 中使用 package 语句定义包,package 语句应该放在源文件的第一行,在每个源文件中只能有一个包定义语句,并且 package 语句适用于所有类型(类、接口、枚举和注释)的文件。定义包语法格式如下:

  1. package 包名;

Java 包的命名规则如下:

  • 包名全部由小写字母(多个单词也全部小写);
  • 如果包名包含多个层次,每个层次用“.”分割;
  • 包名一般由倒置的域名开头,比如 com.baidu,不要有 www;
  • 自定义包不能 java 开头。

注意:如果在源文件中没有定义包,那么类、接口、枚举和注释类型文件将会被放进一个无名的包中,也称为默认包。在实际企业开发中,通常不会把类定义在默认包下。

例如:在一个 com.test 包下有一个名为 Test.java 的文件。

  1. package com.test; // com.test 包下
  2. public class Demo {
  3. public static void main(String[] args) {
  4. // 执行语句
  5. }
  6. }

导包

在之前的学习任务中,我们简单讲解了 Java 的导包,这里为大家详细介绍。

在没有导包之前,我们如果想要实例化 Scanner 对象,语法如下:

  1. java.util.Scanner scanner = new java.util.Scanner(System.in);

为了简化编程,Java 引入了 import 关键字,import 可以向某个 Java 文件中导入指定包层次下的某个类或全部类。import 语句位于 package 语句之后,类定义之前。一个 Java 源文件只能包含一个 package 语句,但可以包含多个 import 语句。

使用 import 导入单个类的语法格式如下:

  1. import 包名+类名;

上面语句用于直接导入指定类,例如导入前面的 java.util.Scanner 类,代码如下:

  1. import java.util.Scanner;

此时,实例化 Scanner 对象的语法如下:

  1. Scanner scanner = new Scanner(System.in);

使用 import 语句导入指定包下全部类的用法按如下:

  1. import 包名.*;

上面 import 语句中的星号(*)只能代表类,不能代表包,表明导入包下的所有类。

注意:使用星号(*)可能会增加编译时间,特别是引入多个大包时,所以明确的导入你想要用到的类是一个好方法,需要注意的是使用星号对运行时间和类的大小没有影响。

通过使用 import 语句可以简化编程,但 import 语句并不是必需的,如果在类里使用其它类的全名,可以不使用 import 语句。

Java 默认为所有源文件导入 java.lang 包下的所有类,因此前面在 Java 程序中使用 String、System 类时都无须使用 import 语句来导入这些类。但对于前面介绍数组时提到的 Arrays 类,其位于 java.util 包下,则必须使用 import 语句来导入该类。

编程要求

仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 中声明一个包,在另一个包中引用该包中的类,具体要求如下:

  • 在 Student.java 文件中,声明一个名为 com.pojo 的包;

  • 在该文件中,有一个 Student 类,在该类中有一个 info 方法,该方法要求实现返回所有学生的功能,在该方法中定义一个 String 数组,数组中的内容有:“小明、小红、小强、小刚”,最后返回该数组;

  • 在 Test.java 文件中,声明一个名为 com.test 的包,并导入 Student 类;

  • 在该文件中的主方法中,调用 Student 类的 info 方法,遍历该数组后输出数组的信息。

点击代码文件可以切换文件。

测试说明

平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。 可在右侧“测试结果”区查看具体的测试集详情。

预期输出:

  1. 学生信息如下:
  2. 小明
  3. 小红
  4. 小强
  5. 小刚

开始你的任务吧,祝你成功!

// 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
/********** Begin **********/
// 声明一个名为 com.pojo 的包
package com.pojo;

public class Student {
    public static String[] info(){
        // 实现返回所有学生的功能,在该方法中定义一个 String 数组
    String[] names = {"小明","小红","小强","小刚"};   
        // 返回该数组
    return names;
    }
}
/********** End **********/
// 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
/********** Begin **********/
// 声明一个名为 com.test 的包
package com.test;
// 导入 Student 类
import com.pojo.Student;

public class Test {
    public static void main(String[] args) {
        System.out.println("学生信息如下:");
        // 调用 Student 类的 info 方法,遍历数组
        for(String names:Student.info()){
            System.out.println(names);   
        }
    }
}
/********** End **********/

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值