栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

Java面向对象编程——包(package)

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java面向对象编程——包(package)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录
  • 包(package)
    • 1、导入包中的类
    • 2、静态导入
    • 3、将类放到包中
    • 4、包的访问权限控制
    • 5、常见的系统包

包(package)
  • 包 (package) 是组织类的一种方式,使用包的主要目的是保证类的唯一性。
  • package 语句作为 Java 源文件的第一条语句,指明该文件中定义的类所在的包。 若缺省该语句,则指定为无名包 。它的格式为:package 顶层包名 子包名;
  • 举例:
    pack1 pack2 PackageTest.java
package pack1.pack2; 
//指定类PackageTest属于包 pack1.pack2
public class PackageTest{
    public void display(){
    System.out.println("in method("in method display()");
    }
}
  • 包对应于文件系统的目录, package 语句中,用 来指明包 目录 的层次;
  • 包通常用 小写 单词标识。通常使用所在公司域名的倒置: com.atguigu.xxx
  • 包的作用:
    • 包帮助管理大型软件 系统 将功能 相近的类划分到同一个包中 。 比如 MVC 的设计模式
    • 包可以包含类和 子包 划分项目 层次 便于管理
    • 解决类命名冲突的问题
    • 控制访问权限
  • 注意:
  1. 在 源文件中使用 import 显式的导入指定包下的类或接
  2. 声明 在包的声明和类的声明之间。
  3. 如果 需要导入多个类或接口,那么就并列显式多个 import 语句即可
  4. 举例 :可以使用 java.util.* 的方式,一次性导入 util 包下所有的类或接口。
  5. 如果 导入的类或接口是 java.lang 包下的,或者是当前包下的,则可以省略此 import 语句。
  6. 如果 在代码中使用不同包下的同名的类。那么就需要使用类的全类名的方式指明调用的
    是哪个类。
    7.如果 已经导入 java.a 包下的类。那么如果需要使用 a 包的子包下的类的话,仍然需要 导入。
    8.import static 组合的使用:调用指定类或接口下的静态的属性或方法
1、导入包中的类
  • java中提供了很多现成的类,例如:
public class Test {
    public static void main(String[] args) {
        java.util.Date date = new java.util.Date();
        // 得到一个毫秒级别的时间戳
        System.out.println(date.getTime());
    }
}

可以使用 java.util.Date 这种方式引入 java.util 这个包中的 Date 类.

  • 也可以使用 import 语句导入包,import 语句告诉编译器到哪里去寻找类:
  • 语法格式:import 包名 . 类名
import java.util.Date;
public class Test {
   public static void main(String[] args) {
   Date date = new Date();
   // 得到一个毫秒级别的时间戳
   System.out.println(date.getTime());
   }
}
  • 如果需要使用 java.util 中的其他类, 可以使用 import java.util.*,例如:
import java.util.*;
public class Test {
    public static void main(String[] args) {
    Date date = new Date();
    // 得到一个毫秒级别的时间戳
    System.out.println(date.getTime());
    }
}
  • 但是更建议显式的指定要导入的类名. 否则还是容易出现冲突的情况。
import java.util.*;
import java.sql.*;
public class Test {
     public static void main(String[] args) {
     // util 和 sql 中都存在一个 Date 这样的类, 此时就会出现歧义, 编译出错
     Date date = new Date();
     System.out.println(date.getTime());
    }
}

// 编译出错
Error:(5, 9) java: 对Date的引用不明确,java.sql 中的类 java.sql.Date 和 java.util 中的类 java.util.Date 都匹配

在这种情况下需要使用完整的类名,例如:

import java.util.*;
import java.sql.*;
public class Test {
    public static void main(String[] args) {
    //使用完整的类名
    java.util.Date date = new java.util.Date();
    System.out.println(date.getTime());
    }
}
  • 注意事项:

    • import 和 C++ 的 #include 差别很大. C++ 必须 #include 来引入其他文件内容, 但是 Java 不需要.

    • import 只是为了写代码的时候更方便. import 更类似于 C++ 的 namespace 和 using

2、静态导入
  • 使用 import static 可以导入包中的静态的方法和字段:
import static java.lang.System.*;
public class Test {
    public static void main(String[] args) {
    out.println("hello");
    }
}
  • 使用这种方式可以更方便的写一些代码, 例如:
import static java.lang.Math.*;
public class Test {
    public static void main(String[] args) {
    double x = 30;
    double y = 40;
    // 静态导入的方式写起来更方便一些.
    // double result = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
     double result = sqrt(pow(x, 2) + pow(y, 2));
     System.out.println(result);
    }
}
3、将类放到包中

3.1、基本规则:

  • 在文件的最上方加上一个 package 语句指定该代码在哪个包中
  • 包名需要尽量指定成唯一的名字, 通常会用公司的域名的颠倒形式(例如 com.baidu.www )
  • 包名要和代码路径相匹配. 例如创建 com.baidu.www 的包, 那么会存在一个对应的路径 com.baidu.www 来存
    储代码.
  • 如果一个类没有 package 语句, 则该类被放到一个默认包中

3.2、操作步骤
(1) 、在 IDEA 中先新建一个包: 右键 src -> 新建 -> 包

(2)、 在弹出的对话框中输入包名, 例如 com.baidu.www ,然后点击Enter键,创建成功
(3) 、在包中创建类, 右键包名 -> 新建 -> 类, 然后输入类名


(4) 、此时可以看到我们的磁盘上的目录结构已经被 IDEA 自动创建出来了

(5)、 同时我们也看到了, 在新创建的 Test.java 文件的最上方, 就出现了一个 package 语句包

4、包的访问权限控制
  • Java权限修饰符 public 、 protected 、 缺省 、 private 置于 类的成员 定义前,用来限定对象对该类成员的访问权限。
  • 对于class 的权限修饰只可以用 public 和 default( 缺省) 。
    • public类可以在任意地方被访问
    • default 类只可以被同一个包内部的类访问
  • default(缺省)示例:

Demo1 和 Demo2 是同一个包中, Test 是其他包中.

  • Demo1.java
package com.baidu.com;
public class Demo1 {
   int value = 0;
}
  • Demo2.java
package com.baidu.com;
public class Demo2 {
   public static void Main(String[] args) {
   Demo1 demo = new Demo1();
   System.out.println(demo.value);
   }
}

// 执行结果, 能够访问到 value 变量
10
  • Test.java
package com.baidu.com.yimu;
public class Test {
    public static void main(String[] args) {
    Demo1 demo = new Demo1();
    System.out.println(demo.value);
    }
}
// 编译出错
Error:(6, 32) java: value在package com.baidu.com.yimu中不是公共的; 无法从外部程序包中对其进行访问
5、常见的系统包
  1. java.lang:系统常用基础类(String、Object),此包从JDK1.1后自动导入。
  2. java.lang.reflect:java 反射编程包;
  3. java.net:进行网络编程开发包。
  4. java.sql:进行数据库开发的支持包。
  5. java.util:是java提供的工具程序包。(集合类等) 非常重要
  6. java.io:I/O编程开发包。
  7. java text 包含了一些 java 格式化相关的类
  8. java awt 包含了构成抽象窗口工具集 abstract window toolkits 的多 个类 这些类被用来构建和管理应用程序的图形用户界面 (GUI)。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/984370.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号