三. Java类与对象8.再谈Java包

在Java中,为了组织代码的方便,可以将功能相似的类放到一个文件夹内,这个文件夹,就叫做包。

包不但可以包含类,还可以包含接口和其他的包。

目录以"\"来表示层级关系,例如 E:\Java\workspace\Demo\bin\p1\p2\Test.java。

包以"."来表示层级关系,例如 p1.p2.Test 表示的目录为 \p1\p2\Test.class。

如何实现包

通过 package 关键字可以声明一个包,例如:
    package p1.p2;
必须将 package 语句放在所有语句的前面,例如:

  1. package p1.p2;
  2. public class Test {
  3. public Test(){
  4. System.out.println("我是Test类的构造方法");
  5. }
  6. }

表明 Test 类位于 p1.p2 包中。

包的调用

在Java中,调用其他包中的类共有两种方式。

1) 在每个类名前面加上完整的包名

程序举例:

  1. public class Demo {
  2. public static void main(String[] args) {
  3. java.util.Date today=new java.util.Date();
  4. System.out.println(today);
  5. }
  6. }

运行结果:
Wed Dec 03 11:20:13 CST 2014

2) 通过 import 语句引入包中的类

程序举例:

  1. import java.util.Date;
  2. // 也可以引入 java.util 包中的所有类
  3. // import java.util.*;
  4. public class Demo {
  5. public static void main(String[] args) {
  6. Date today=new Date();
  7. System.out.println(today);
  8. }
  9. }

运行结果与上面相同。

实际编程中,没有必要把要引入的类写的那么详细,可以直接引入特定包中所有的类,例如 import java.util.*;。

类的路径

Java 在导入类时,必须要知道类的绝对路径。

首先在 E:\Java\workspace\Demo\src\p0\ 目录(E:\Java\workspace\Demo\src\ 是项目源文件的根目录)下创建 Demo.java,输入如下代码:

  1. package p0;
  2. import p1.p2.Test;
  3. public class Demo{
  4. public static void main(String[] args){
  5. Test obj = new Test();
  6. }
  7. }

再在 E:\Java\workspace\Demo\src\p1\p2 目录下创建 Test.java,输入如下代码:

  1. package p1.p2;
  2. public class Test {
  3. public Test(){
  4. System.out.println("我是Test类的构造方法");
  5. }
  6. }

假设我们将 classpath 环境变量设置为 .;D:\Program Files\jdk1.7.0_71\lib,源文件 Demo.java 开头有 import p1.p2.Test; 语句,那么编译器会先检查 E:\Java\workspace\Demo\src\p0\p1\p2\ 目录下是否存在 Test.java 或 Test.class 文件,如果不存在,会继续检索 D:\Program Files\jdk1.7.0_71\lib\p1\p2\ 目录,两个目录下都不存在就会报错。显然,Test.java 位于 E:\Java\workspace\Demo\src\p1\p2\ 目录,编译器找不到,会报错,怎么办呢?

可以通过 javac 命令的 classpath 选项来指定类路径。

打开CMD,进入 Demo.java 文件所在目录,执行 javac 命令,并将 classpath 设置为 E:\Java\workspace\Demo\src www.xingcaiyule.net ,如下图所示:

运行Java程序时,也需要知道类的绝对路径,除了 classpath 环境变量指定的路径,也可以通过 java 命令的 classpath 选项来增加路径,如下图所示:

注意 java 命令与 javac 命令的区别,执行 javac 命令需要进入当前目录,而执行 java 命令需要进入当前目录的上级目录,并且类名前面要带上包名。

可以这样来理解,javac是一个平台命令,它对具体的平台文件进行操作,要指明被编译的文件路径。而java是一个虚拟机命令,它对类操作,即对类的描述要用点分的描述形式,并且不能加扩展名,还要注意类名的大小写。

这些命令比较繁杂,实际开发都需要借助 Eclipse,在Eclipse下管理包、编译运行程序都非常方便。Eclipse 实际上也是执行这些命令。

包的访问权限

被声明为 public 的类、方法或成员变量,可以被任何包下的任何类使用,而声明为 private 的类、方法或成员变量,只能被本类使用。

没有任何修饰符的类、方法和成员变量,只能被本包中的所有类访问,在包以外任何类都无法访问它。

时间: 2024-11-06 17:32:59

三. Java类与对象8.再谈Java包的相关文章

沉淀再出发:再谈java的多线程机制

沉淀再出发:再谈java的多线程机制 一.前言 自从我们学习了操作系统之后,对于其中的线程和进程就有了非常深刻的理解,但是,我们可能在C,C++语言之中尝试过这些机制,并且做过相应的实验,但是对于java的多线程机制以及其中延伸出来的很多概念和相应的实现方式一直都是模棱两可的,虽然后来在面试的时候可能恶补了一些这方面的知识,但是也只是当时记住了,或者了解了一些,等到以后就会变得越来越淡忘了,比如线程的实现方式有两三种,线程池的概念,线程的基本生命周期等等,以及关于线程之间的多并发引起的资源的抢占

java类和对象详解

对象和类详解 什么是对象:万物皆对象,什么东西都是对象,例如,猫狗人 什么是类:类是同一事物的统称,它描述一类对象的行为和状态. 设计类:抽象过程 类的属性 类的方法 什么是实例化:由类得到对象这个过程叫做实例化 对象和类的区别:一个是抽象一个是具体,一个是集合一个是个体等等.一个是魔板一个是实例,一个是数据一个是数据结构等等. 如何设计类:public class student{}//把类的共同提出提取出来, 学生会有什么:名字,年龄,性别,等等,这就是共同特征. //共同特征为类的属性,共

Java类与对象的课后练习

Java类与对象的课后练习编程题(java2实用教程P111) 这章内容自学完了,在做教材课后其他练习题的时候(只要自己仔细)都没啥问题,但在做最后一道上机编程题的时候问题出现了,在阅读题目的时候自己能感受到的是这道题不难(的确也不难),我也很快写了出来,但运行程序的时候,结果一直不正确,最后改来改去都不对,思路是对的,分步执行的时候也感觉是有个地方出了问题但就是揪不出来,最后又把课本的前面的例子反复的看对比,最后找到了问题: System.out.println("cpu的速度:"+

有关java类、对象初始化的话题,从一道面试题切入

最近在整理东西时,刚好碰到以前看的一道有关java类.对象初始化相关题目,觉得答案并不是非常好(记忆点比较差,不是很连贯).加上刚好复习完类加载全过程的五个阶段(加载-验证-准备-解析-初始化),所以如果周志明大大诚不我欺的话,无论是类加载过程.还是实例化过程的顺序我都已经了然于心了才对. 一道面试题 标题:2015携程JAVA工程师笔试题(基础却又没多少人做对的面向对象面试题) 地址:https://zhuanlan.zhihu.com/p/25746159 该题代码如下: public cl

Scal(三)——类与对象

Scala快速入门(三)--类与对象 一.类 这边类的模板如下,和Java很像 object a { def main(args: Array[String]): Unit = { val person=new Person println(person.name+" "+person.age) } } class Person{ var name:String = "steve yu" var age = 10 } 遇到不确定的成员属性,最好不要赋值null,可赋

java类,对象,方法

1,类和对象   在面向对象的概念当中,类(class)是既包括数据又包括作用于数据的一组操作的封装体.类的数据称为成员变量,类对数据的操作称为成员方法.成员变量反映类的状态和特征,成员方法反映类的行为和能力.类的成员变量和方法统称为类的成员.   对象(Object)是类的实例(instance).对象是动态的,拥有生命周期,都会经历一个从创建.运行到消亡的过程.对象与类的关系就像变量与数据类型一样.   类声明 { 修饰符 } class <Classname> { extends <

java类与对象的区别

java类与对象的区别是个老生常谈的问题,刚开始学java的时候就开始接触类和对象,今天来总结一下他们之间的区别. 首先讲讲class和object的区别,其实就是一句话:object是所有class的父类,所有class类都默认继承object. java中类是对一类"事物"的属性和行为一种抽象,比如人类就可以定义为一个Person类: public class Person { public int age;//年龄 public String name;//姓名 public i

java总结第三次//类和对象2、3

四.类和对象2 主要内容:Java类的继承.方法的重写.覆盖.访问控制.super 关键字.多态性及其应用 1.继承 要求:Java只支持单继承,不允许多重继承 一个子类只能有一个父类 一个父类可以派生出多个子类 子类继承了父类,就继承了父类的方法和属性. 在子类中,可以使用父类中定义的方法和属性,也可以创建新的数据和方法. 因而,子类通常比父类的功能更多. 在Java 中,继承的关键字用的是“extends”,即子类是对父类的“扩展”. 注意:子类不能继承父类中私有的(private)成员变量

三. Java类与对象9. 源文件的声明规则

当在一个源文件中定义多个类,并且还有import语句和package语句时,要特别注意这些规则: 一个源文件中只能有一个public类. 一个源文件可以有多个非public类. 源文件的名称应该和public类的类名保持一致.例如:源文件中public类的类名是Employee,那么源文件应该命名为Employee.java. 如果一个类定义在某个包中,那么package语句应该在源文件的首行. 如果源文件包含import语句,那么应该放在package语句和类定义之间.如果没有package语