109
第 1章 对象和包
上一章介绍过对象的概念,并且提出了对象是通过类创造出来的,为什么呢?是如何创
造出来的呢?本章将介绍对象和包的知识,通过对对象的讲述,希望读者能将对象和类作个
对比。对象、包是 Java 程序设计的核心之一,也是面向对象程序设计与面向过程程序设计
的最大不同点之一。
1.1 对象
什么是对象呢?本节将会详细的给大家讲述对象概念、用法,以及如何创建它们。对象
是一个比较抽象的概念。在这里将会结合实例进行讲述、分析,让读者能够从本质上很好的
理解对象。
1.1.1 什么是对象
很多编程爱好者,包括有过很多年编程经验的人,对于对象的概念都是很模糊的,如果
将对象的概念与现实生活中的实物相比,就会发现对象其实是很好理解的。
对象就是实际生活中的事物,可以说一切都是对象,在现实生活中时时刻刻都接触到对
象这个概念,例如桌子、椅子、电脑、电视机、空调等等。这些实物都可以说是对象。
对象有三个主要的特征:
对象行为:这个对象能做什么,即可以让这个对象完成什么样的功能,比如自行车
可以载大家去想去的地方。
对象的状态:当通过一个操纵对象的方法时,对象所保持的一种特定的状态,比如
可以扭转车头使得自行车转弯、刹车会使车停下来。
对象的标识符:可以通过标识符,区别具有相同行为或类似状态的对象,例如自行
车的颜色、样式都是对象的标识符。通过它能区分不同的对象。例如红色的自行车、
蓝色自行车,通过颜色这个标识符,可以区分两种不同自行车对象,代码如下所示。
Class 自行车
{
int color;-------------------------------对象的标识符
int material;---------------------------对象的标识符
int type;--------------------------------对象的标识符
int a-------------------------------------对象的状态属性
void ride(){……………..}--------- 对象的行为
void control(int a)-------------------对象的状态方法函数
{
if a=number1
转弯
elseif a=number2
直行
110
else a=number3
停止
}
}
从以上例子可以清楚的看出对象到底是什么,下面将学习如何去操作对象。
1.1.2 操作对象
读者初步了解到,对象其实就是现实生活中的事物,现实生活中要经常去使用和操作这
些事物,那么如何去操作这些事物(对象)呢?
针对这个问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
,提出了一个概念,就是对象句柄,什么是对象句柄?为了能清楚的解释
这个概念,先举个例子:使用汤勺去喝汤,汤勺的勺部分是用来盛汤的,汤勺把手部分是让
大家能够操作汤勺的工具。对象句柄就相当于前面所说的汤勺把手,而汤勺就像前面所说的
对象。
通过上面的例子可以总结出,对象句柄其实是一个指向对象所在内存地址的指针,如果
要操作对象,只需要操作对象句柄,正如要想让汤勺能盛汤,只要握住汤勺的把手的道理是
一样的。
1.1.3 初始化对象
创建一个对象时,总希望它能马上能被初始化,即立刻将其与相应的对象进行关联。在
Java 中,这是一个非常简单的工作。使用关键字“new”来完成对象句柄的命名,用“=”
将对象句柄与对象关联。举例:
String str=new String(“Hello”);
解释与分析:String 是 Java 中用到最多的字符串对象。在这个例子中,先给对象句
柄命名,并且声明这个对象句柄的类型是属于什么类型的对象,最后,将“hello”这个
字符串类型对象的内存地址,赋给这个对象句柄。于是,对象句柄初始化的工作就算完
成了。以后要操纵这个对象,只要操纵这个“str”对象句柄就可以了。下面看一个程序
段。
public class object1
{
public static void main(String[] args)
{
object1 m=new object1();
}
}
以上这个例子中,通过“object1 m=new object1()”这条语句,将“object1”类初始化一
个“object1”对象“m”,而这个“m”就是前面提到的对象句柄。在学完本章的其他小节
后,就可以通过对象句柄,来访问这个对象的方法函数和属性值。
真正开发的时候,就可以体会到使用对象句柄的优点在什么地方。对象初始化工作是非
常重要的,它是从一个类中创造一个对象的过程。要注意的是首先将对象句柄的类型声明好,
再将“=”作为一个指向,指向由关键字所创建的新对象所存储的内存地址,以后,就可以
通过这个对象句柄来操作这个新对象。一般情况下,是将对象句柄看成是新对象的替代。
虽然对象句柄被看成对象的替代物,但必须将这两个不同的概念区分开来,因为真正要
111
操作的是对象,而对象句柄只不过是一个指向对象所存储的内存地址指针,是一个操作对象
的工具。其实对象句柄就好比是 C++中的指针,但是在 Java 中不存在指针这个概念。
操作对象有什么用处呢?其实操作对象就是通过访问对象内的成员,来实现某种功能。
那对象里面有些什么成员呢?下节将更加深入的讲解对象中的成员。
1.2 对象家族中的成员
对象家族中有什么呢?有对象的成员方法和对象的成员变量,这些都有什么含义?如何
使用它们?在本节中,将会通过实例为读者详细的讲述。
1.2.1 对象的成员方法
方法就是能够让这个对象做什么,或者
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
现出什么状态的函数,举一个例子,有一个自
行车的对象,如何让它停止、如何驾驶它,这些都是前面所提到的方法。方法就是其他编程
语言中所提到的函数,而这个函数是用来实现对象的某个功能,或表现出对象的某个状态。
什么是成员?成员的意思就是指它是属于对象的,就好比某个俱乐部的成员是属于这个
俱乐部的一样。
将前面两个概念连在一起,就很清楚了。所谓的成员方法就是属于对象的,并且能够让
对象做什么,或表现出什么状态的函数。下面看一个实例。
public class object2
{
void print()
{
System.out.println("小明是一名优秀的程序员");
}
public static void main(String[] args)
{
object2 m=new object2 ();
m.print();
}
}
运行结果
小明是一名优秀的程序员
从这个程序段中,可以看到“print()”函数其实就是“object2”这个类中的成员方法。
要想使用这个成员方法,必须根据这个类“object2”构造出一个对象,再利用这个对象初始
化一个对象句柄,这样就可以利用这个句柄来访问这个成员方法。下面再看一个复杂一点的
有关成员方法的实例。
public class object3
{
public void print()
{
for(int i=0;i<=5;i++)
{
for(int j=5-i;j>=0;j--)
{
112
System.out.print("* ");
}
System.out.println();
}
}
public static void main(String[] args)
{
object3 pro=new object3();
pro.print();
}
}
运行结果
******
*****
****
***
**
*
在这个程序中,构造了一个方法“print()”,然后构造对象 pro,通过 pro 来访问这
个方法。
仔细来看看下面的程序,将上面程序改变一下。
public class object4
{
public static void main(String[] args)
{
for(int i=0;i<=5;i++)
{
for(int j=5-i;j>=0;j--)
{
System.out.print("* ");
}
System.out.println();
}
}
}
运行结果
******
*****
****
***
**
*
这个程序是否比前面那个程序段读起来要费劲点呢?而这个就是面向对象程序设计和
面向过程的程序设计的最大区别。面向对象的程序设计将这个程序中每个部件(包括成员方
法),作为一个模块,等要使用它的时候,再随时调用它们,而面向过程的程序设计,将这
个程序的需求按照顺序的步骤来编写。
下面来分析这个程序段。在面向对象的程序设计中,读者一定要学会一点,首先看主运
行程序,也就是“public static void main(String[] args){}”。在这个主运行程序中,看到了两
句代码。一句是对象初始化语句,一句是利用对象引用成员方法的语句,这样读者就很清楚,
这个程序要干什么,然后再仔细地看这个成员方法是干什么的,这样读程序会使整个程序变
得越来越轻松。
113
随着成员方法的越来越复杂,面向对象的程序设计的思路,会使的程序很容易读。下面
再看一个更加复杂的程序,来体会一下,使用成员方法的优点。
public class object5
{
public void print2()
{
for(int i=5;i>0;i--)
{
for(int k=0;k<=(5-i);k++)
{
System.out.print(" ");
}
for(int j=1;j<=(2*i-1);j++)
{
System.out.print("*");
}
System.out.println();
}
}
public void print1()
{
for(int i=1;i<=5;i++)
{
for(int j=0;j<=(5-i);j++)
{
System.out.print(" ");
}
for(int k=1;k<=(2*i-1);k++)
{
System.out.print("*");
}
System.out.println();
}
}
public static void main(String[] args)
{
object5 pro=new object5();
pro.print1();
pro.print2();
}
}
运行结果
*
***
*****
*******
*********
*******
*****
***
*
这个程序段是否很复杂,使用上面说的读程序的方法。首先看看主运行程序,在主运行
114
程序中有三句。一句是对象初始化语句,一句是引用“print1()”方法,最后一句是引用
“print2()”方法。然后再看“print1()”和“print2()”两个方法是如何实现的。至于这个方
法的实现过程,应该很简单,只不过是一个多层 for 循环语句而已,读者可以自己分析它的
实现过程。
成员方法就是函数段,而函数段拥有自己的特性。在定义函数时必须遵照下面的结构:
返回值类型 方法名(形式参数)
{
方法体
}
首先来讨论一下返回值类型,什么叫返回值?返回值就是一个函数结果所获得的值,将
这个值返回到主程序中,并且将这个值作为主程序中运行的参数的值。下面看一个有关返回
值的例子。
public class object6
{
int print(int x)
{
return 2*x;
}
public static void main(String[] args)
{
object6 pro=new object6();
System.out.println(pro.print(3));
}
}
这个程序段中,有一个“int print(int x)”的方法,在这个方法中返回了“2*x”,将这
个值带回到主运行程序中去,于是在主运行程序中,根据“pro.print(x)”中的参数“x=3”,
得出这个方法的返回值是 6。其实还有两个概念希望读者能清楚,就是实参和形参。刚才说
的“int print(int x)”中的“x”就是形参,而主运行程序中相同函数的参数被称为实参。
上面说到返回值,但有的函数方法是没有返回值的,那该如何处理呢?在程序设计中,
如果一个方法函数没有返回值,那么可以将函到数结构中的返回值类型写成“void”,这个
就代表此函数无返回值。例如下面的程序段。
public class object7
{
void print()
{
System.out.println("我是一个名程序员")
}
public static void main(String[] args)
{
object7 pro=new object7();
pro.print();
}
}
上面的程序段就是一个无返回值类型的程序例子,为了加深印象,下面看一个详细的复
杂的实例。
public class object8
{
public int sum(int x,int y,int z)
{
int sum;
115
return sum=x+y+z;
}
public int aver(int x,int y,int z)
{
int aver;
return aver=(x+y+z)/3;
}
void print()
{
System.out.println("这个就是这个同学的成绩");
}
public static void main(String[] args)
{
object8 num=new object8();
System.out.println(num.sum(90,80,70));
System.out.println(num.aver(90,80,70));
num.print();
}
}
运行结果
240
80
这个就是这个同学的成绩
以上的程序中包含无返回值的方法,同时也包含了带返回值的方法。
1.2.2. 对象的成员变量
成员变量是什么呢?理解了成员方法,一定可以知道成员变量是什么。成员变量就是对
象所拥有的、并且代表对象的属性值,例如一个自行车对象,它的颜色、材料等都是这部自
行车的属性值,也可以说是它的成员变量。
提起成员变量,就想到前面讲过的局部变量。其实这里说的成员变量相当于前面说过的
类变量。它也可以不用初始化,系统自动给它赋值。局部变量就不能不初始化了,否则在编
译的时候会报错,前面已经有过实例,此小节就不再赘述。
1.3 对象中访问控制符的重要性
在 Java 程序设计中,有一个很重要的知识点,就是访问控制符。不要看它的
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
简单,
但其重要性决定了程序可运行性。
下面将讲述访问控制符,希望读者能够好好的掌握它的用法,它决定了一个程序的运行
结果。甚至决定了一个程序是否能运行。
1.3.1 什么是访问控制符
访问控制符在 Java 程序语言中,有着举足轻重的作用。那什么是访问控制符呢?所谓
的访问控制符就是能够在控制访问权限的关键字。在 Java 程序语言中的访问控制符有好几
116
种,但是它又被分为不同的类别,具体的划分情况如下:
(1)出现在类之前的访问控制符:
public
default
(2)出现在成员变量与成员方法之前的访问控制符
private
public
default
protected
下面将重点的讲述这些访问控制符的作用和用法。
1.出现在成员变量与成员方法之前的访问控制符 private
当用在成员变量和成员方法之前的访问控制符为 private 时,说明这个变量只能在类的
内部被访问,类的外部是不能被访问的。其实当看到单词“private”时,就应该知道是私有
的意思,所以 private 控制符就是指私有成员,请看看下面这个有关 private 的实例。
public class object9
{
public static void main(String[] args)
{
pri1 p=new pri1();
p.print();
System.out.println(2*(p.x));
}
}
class pri1
{
private int x;
private void print()
{
System.out.println("我是一名程序员");
}
}
这个程序段经过编译后,出现了错误,错误就是成员变量“x”和成员方法“print()”
都是属于“pri”类私有的,不能被其他的类所使用。通过使用“private”控制符,将所有的
成员数据都封装到了类里面,其他的类无法使用它们,也无法知道它们是如何实现的。这个
就是本
书
关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf
后面要详细讲述的封装性。下面再看一个有关它的实例。
Class pri1
{
private int x;
void setX(int y)
{
x=y;
}
void getX()
{
return x;
}
}
public class object10
{
117
public static void main(String [] args)
{
pri1 p=new pri1();
p.getX();
}
}
这个程序段中,变量“x”是私有成员变量,外部类无法使用它,而成员方法不是私有
的,所以外部类可以访问它。
2.public控制符
public 控制符是指所有类都可以访问。当成员数据前面加上了控制符“public”时,意
味着这个成员数据将可以被所有的类访问,下面来看一个有关它的实例。
public class object11
{
public static void main(String[] args)
{
pri1 p=new pri1();
p.print(2);
System.out.println(2*(p.x));
}
}
class pri1
{
public int x=1;
public void print(int y)
{
System.out.println(2*y);
}
}
从上面的程序段中,可以看出“public”控制符的用法,只要记住“public”控制符是任
何类都可以使用的,而“private”控制符只能是声明它的那个类才能使用。
如果在成员数据的前面加上“default”控制符,那么就意味着只有同一个包中的类
才能访问。
如果在成员数据的前面加上“protected”控制符,那就意味着不仅同一个包中的类
可以访问,并且位于其他包中的子类也可以访问。
3.出现在类之前的访问控制符
当在一个类的前面加上“public”控制符,同前面一样,也是在所有类中可以访问。
当在一个类的前面加上“default”控制符,同前面一样,也是在同一包中的类可以
访问。这个访问控制符是 Java 程序中默认的控制符。当在类前不加任何控制符时,
默认就是“default”。
1.3.2 如何使用访问控制符及其重要性
本节继续讲述访问控制符,学习应该如何在程序中灵活运用这些访问控制符。访问控制
符对于整个程序段是非常关键的,当需要让自己编写的这个类,被所有的其他类所公共拥有
时,可以将类的访问控制符写为“public”。当需要让自己的类,只能被自己的包中的类所
共同拥有时,就将类的访问控制符改为“default”。
118
另外,当需要访问一个类中的成员数据时,可以将这个类中的成员数据访问控制符设置
为“public”、“default”和“protected”。至于使用哪一个,就要看哪些类需要访问这个类
中的成员数据。下面看一个有关访问控制符的实例。
public class object12
{
public static void main(String[] args)
{
pro pro=new pro();
pro.print();
}
}
class pro
{
public void print()
{
for(int i=1;i<100;i++)
{
if((i%3)==0&&(i%5)!=0&&(i%9)!=0)
System.out.print(i+" " );
}
}
}
从上面的程序段可以看出,当一个方法的访问控制符设置成“public”时,其他的类都
可以访问它,下面将这个程序段修改一下,看看有什么结果。
public class object13
{
public static void main(String[] args)
{
pro pro=new pro();
pro.print();
}
}
class pro
{
private void print()
{
for(int i=1;i<100;i++)
{
if((i%3)==0&&(i%5)!=0&&(i%9)!=0)
System.out.print(i+" " );
}
}
}
上面这个程序段在编译的时候,就会报错,错误就是“print()”方法是类“pro”中
私有的方法,是不能被其他类所访问的。从这两个程序中,读者应该能充分体会到“public”
和“private”这两个访问控制符的使用环境。
119
1.4 重载
重载在整个 Java 程序语言设计中,有着非常重要的地位。本节将先讲述重载的概念,
然后使用大量的实例,让读者更加清晰的熟悉重载,并且联系实际,将这个概念使用到现实
生活中的程序开发中去,从而为以后的开发工作奠定基础。
1.4.1 什么是重载
在 Java 中,同一个类中的 2 个或 2 个以上的方法可以有同一个名字,只要它们的参数
声明不同即可,这种方法就被称为重载(overloaded),此过程称为方法重载(method
overloading)。下面看一个详细的实例。
class overload
{
///一个普通的方法,不带参数
void test()
{
System.out.println("No parameters");
}
///重载上面的方法,并且带了一个整型参数
void test(int a)
{
System.out.println("a: " + a);
}
///重载上面的方法,并且带了两个参数
void test(int a,int b)
{
System.out.println("a and b: " + a + " " + b);
}
///重载上面的方法,并且带了一个双精度参数,与上面带一个参数的重载方法不一样
double test(double a)
{
System.out.println("double a: " + a);
return a*a;
}
public static void main(String args[])
{
overload o= new overload ();
o.test();
o.test(2);
o.test(2,3);
o.test(2.0);
}
}
运行结果
No parameters
a:2
a and b:2 3
double a:2.0
120
通过上面的实例,读者可以看出,重载就是在一个类中,有相同的函数名称,但形参不
同的函数。重载的结果,可以让一个程序段,尽量减少代码和减少程序的函数种类。
1.4.2 用实例来说明重载的意义
为了能让读者更加熟练运用重载方法编写程序,下面将举一个有关重载的实例。
public class overload1
{
///一个输出方法
void print()
{
System.out.println("你好");
}
///重载上面的输出方法,加上了参数
void print(String name)
{
System.out.println(name+",你好");
}
///重载上面的输出方法,加上了两个参数
void print(String name,int age)
{
System.out.println(name+",你好,你有"+age+"岁了");
}
public static void main(String args[])
{
overload1 o=new overload1();
o.print();
o.print("王华");
o.print("王华",30);
}
}
运行结果
你好
王华,你好
王华,你好,你有 30岁了
使用重载其实就是避免繁多的方法函数名,有些函数的功能是相似的,为了重新建立一
个函数,重新取个函数名称,这会让程序段显得比较不容易阅读。
下面总结重载的实质:
方法名相同
参数个数不同
参数类型不同
当访问一个重载方法时,首先编译器会通过比较头部中的参数类型与实际调用方法中使
用值的类型,以选择正确的方法,如没有发现匹配的,则编译器报错,这就叫作重载分辨。
1.5 包
“包”机制是 Java 中特有的,也是 Java 中最基础的知识之一。一些初学 Java 的朋友,
121
通常像学其他语言一样从教材上“copy”一些程序来运行,可是却常常遇到莫名其妙的错误
提示,这些问题事实上都是对“包”的原理不理解。本节将就此问题进行深入阐述。
1.5.1 什么是 Java中的包
在 Java 程序语言中,为了开发方便,会将多个功能相似的类放到一个组内,而这个组
就是“包”,包就像一个目录结构。
先来观察目录结构,目录的结构分为目录、子目录和文件。在操作系统中,如何表示一
个文件的目录结构呢?先看一个有关文件目录结构的例子。
D:\Java\wp.doc
其实包的表示有点像文件的目录结构。
例如:Java.wp。
下面来分析一下上面的代码,“Java”就是包名称,而“wp”就是类名称。
包就是将一些类组合在一起。例如,在一个 Java 包中有 wp 类、wp1 类、wp2 类等等。
那么如何来使用它们、为什么要使用它们?下一节将会详细的介绍
1.5.2 如何实现包
在 Java 中要想使用包,必须先声明一个包,而声明一个包必须使用关键字“package”。
具体如下所示:
package Java.wp
声明一个包时,声明语句必须放在类所有语句的最前面,下面先看一个实例。
Public class package1
{
public static void main(String[] args)
{
System.out.println(new Date());
}
}
编辑出错,系统提示找不到类 Date。在 Java 中调用其他包中的公用类,可以使用两种
方式:
第一种方式就是在每个类名前加上完整的包名。具体如下所示。
java.util.Date today=new java.util.Date();
这样的对象实例化看起来与以前用的“Date today=new Date()”有很大区别,就是在类
名称前面加上了包的名字。再把刚才那个程序段修改,如下所示。
Public class package1
{
public static void main(String[] args)
{
System.out.println(new java.util.Date());
}
}
这次编译器编译通过了。
第二种方式就是通过引入特定的类。在一个类中引入特定的类通过关键字“import”来
实现,下面仍旧将上面的例子修改一下。
122
Import java.util.Date;
Public class package1
{
public static void main(String[] args)
{
System.out.println(new Date());
}
}
这个程序段通过引入特定的类的方式,首先将类直接引入,那么系统编译时,就会先调
用这个类,这样编译时就不会报错。
平时在编写程序时,没有必要把要引入的类写的那么详细,可以直接引入特定包中所有
的类。例如下面的例子。
Import java.util.*;
Public class package1
{
public static void main(String[] args)
{
System.out.println(new Date());
}
}
1.5.3 什么是类路径和默认包
在编程时,并没有使用关键字“import”来导入包和类,这是为什么?为什么有的时候
要导入,而有的时候不用导入?
Java 虚拟机在运行时,系统会自动导入“java.lang”包,只要程序用到这个包的类时,
不需要导入,因为系统自动为程序员导入了,就像在这个包内编写程序段一样。除了
“java.lang”包外,要使用其他的包时,都必须手工导入。
由于这个包由系统自动导入,所以称这个包为系统的默认包。类路径是什么呢?前面在
配置 Java 编程环境时,配置了类路径。类路径就是能自动让系统找到程序员需要导入的类,
所以在配置 Java 编程环境中,配置类路径是非常关键的。
1.5.4 包的作用域
在前面提到过“public”和“private”访问控制符,被声明为“public”的类、方法或成
员变量,可以被任何类使用,而声明为“private”的类、方法或成员变量,只能被本类使用。
当没有指定“public”或“private”的部件,只能被本包中的所有方法访问,在包以外任何
方法都无法访问它。
1.6 注释及嵌入文档
注释对于读懂程序起着不可缺少的作用,一个程序的可读性是否好,关键就是注释。对
于一个程序的二次开发,要想读懂前面的程序代码,首先要在程序中有大量的注释文档。
123
本节将介绍如何对代码进行注释。通过实例来证明注释在开发工作中的重要地位。
1.6.1 如何添加注释
如何添加注释呢?一般使用下面的方法。
/**
包名引用
*/
这个是类和包、方法的注释,下面将详细的介绍这些注释。
1.6.2 类、方法、字段等注释的方法
在这一小节中,将简单地介绍类、方法、字段等的注释方法,虽简单但是很重要。
1.类注释
类注释一般必须放在所有的“import”语句之后,紧靠在类声明之前。
/**
this is the student class .
it includes the student name.
*/
public class student
{
……………………..
}
2.方法注释
方法注释必须紧靠在方法声明的前面,除了/**………….*/标签外,还可以使用下列的
以@开始的标签。
@param 变量描述
@return 返回类型描述
@throws 异常类描述
如果以上的注释都没有,把程序拿给别人看,别人会轻易看懂吗?如果过了很长时间以
后,自己再来看看这些程序,可能也已经忘记这些代码是做什么的了。
所以说,注释对于程序的可读性来说,是非常重要的,希望读者不要忽视它,以免造成
无可挽回的损失。
1.7 常见疑难解答
1.7.1 包在实际编程中究竟有什么作用
答:现在读者可能还不会很清楚的知道包的作用,等学到后面,一定能够理解。先观察
包里面有什么,其实包里面存放的是一些方法和类、接口等等,这些都是在编写程序时,需
要调用的,例如要编写 SQL 数据库程序,那么就要调用包含 SQL 的包。
124
1.7.2 访问控制符在实际开发有什么作用
答:在实际开发工作中,有一个很重要的概念:“封装”。这个封装涉及到了访问控制
符,另外,当一个包中的方法需要调用另一个包的方法时,也涉及到了访问控制符,所以说
访问控制符贯穿了整个程序开发,起着重要的作用。
<<
/ASCII85EncodePages false
/AllowTransparency false
/AutoPositionEPSFiles true
/AutoRotatePages /All
/Binding /Left
/CalGrayProfile (Dot Gain 20%)
/CalRGBProfile (sRGB IEC61966-2.1)
/CalCMYKProfile (U.S. Web Coated \050SWOP\051 v2)
/sRGBProfile (sRGB IEC61966-2.1)
/CannotEmbedFontPolicy /Warning
/CompatibilityLevel 1.4
/CompressObjects /Tags
/CompressPages true
/ConvertImagesToIndexed true
/PassThroughJPEGImages true
/CreateJDFFile false
/CreateJobTicket false
/DefaultRenderingIntent /Default
/DetectBlends true
/DetectCurves 0.0000
/ColorConversionStrategy /LeaveColorUnchanged
/DoThumbnails false
/EmbedAllFonts true
/EmbedOpenType false
/ParseICCProfilesInComments true
/EmbedJobOptions true
/DSCReportingLevel 0
/EmitDSCWarnings false
/EndPage -1
/ImageMemory 1048576
/LockDistillerParams false
/MaxSubsetPct 100
/Optimize true
/OPM 1
/ParseDSCComments true
/ParseDSCCommentsForDocInfo true
/PreserveCopyPage true
/PreserveDICMYKValues true
/PreserveEPSInfo true
/PreserveFlatness true
/PreserveHalftoneInfo false
/PreserveOPIComments false
/PreserveOverprintSettings true
/StartPage 1
/SubsetFonts true
/TransferFunctionInfo /Apply
/UCRandBGInfo /Preserve
/UsePrologue false
/ColorSettingsFile ()
/AlwaysEmbed [ true
]
/NeverEmbed [ true
]
/AntiAliasColorImages false
/CropColorImages true
/ColorImageMinResolution 300
/ColorImageMinResolutionPolicy /OK
/DownsampleColorImages true
/ColorImageDownsampleType /Bicubic
/ColorImageResolution 300
/ColorImageDepth -1
/ColorImageMinDownsampleDepth 1
/ColorImageDownsampleThreshold 1.50000
/EncodeColorImages true
/ColorImageFilter /DCTEncode
/AutoFilterColorImages true
/ColorImageAutoFilterStrategy /JPEG
/ColorACSImageDict <<
/QFactor 0.15
/HSamples [1 1 1 1] /VSamples [1 1 1 1]
>>
/ColorImageDict <<
/QFactor 0.15
/HSamples [1 1 1 1] /VSamples [1 1 1 1]
>>
/JPEG2000ColorACSImageDict <<
/TileWidth 256
/TileHeight 256
/Quality 30
>>
/JPEG2000ColorImageDict <<
/TileWidth 256
/TileHeight 256
/Quality 30
>>
/AntiAliasGrayImages false
/CropGrayImages true
/GrayImageMinResolution 300
/GrayImageMinResolutionPolicy /OK
/DownsampleGrayImages true
/GrayImageDownsampleType /Bicubic
/GrayImageResolution 300
/GrayImageDepth -1
/GrayImageMinDownsampleDepth 2
/GrayImageDownsampleThreshold 1.50000
/EncodeGrayImages true
/GrayImageFilter /DCTEncode
/AutoFilterGrayImages true
/GrayImageAutoFilterStrategy /JPEG
/GrayACSImageDict <<
/QFactor 0.15
/HSamples [1 1 1 1] /VSamples [1 1 1 1]
>>
/GrayImageDict <<
/QFactor 0.15
/HSamples [1 1 1 1] /VSamples [1 1 1 1]
>>
/JPEG2000GrayACSImageDict <<
/TileWidth 256
/TileHeight 256
/Quality 30
>>
/JPEG2000GrayImageDict <<
/TileWidth 256
/TileHeight 256
/Quality 30
>>
/AntiAliasMonoImages false
/CropMonoImages true
/MonoImageMinResolution 1200
/MonoImageMinResolutionPolicy /OK
/DownsampleMonoImages true
/MonoImageDownsampleType /Bicubic
/MonoImageResolution 1200
/MonoImageDepth -1
/MonoImageDownsampleThreshold 1.50000
/EncodeMonoImages true
/MonoImageFilter /CCITTFaxEncode
/MonoImageDict <<
/K -1
>>
/AllowPSXObjects false
/CheckCompliance [
/None
]
/PDFX1aCheck false
/PDFX3Check false
/PDFXCompliantPDFOnly false
/PDFXNoTrimBoxError true
/PDFXTrimBoxToMediaBoxOffset [
0.00000
0.00000
0.00000
0.00000
]
/PDFXSetBleedBoxToMediaBox true
/PDFXBleedBoxToTrimBoxOffset [
0.00000
0.00000
0.00000
0.00000
]
/PDFXOutputIntentProfile ()
/PDFXOutputConditionIdentifier ()
/PDFXOutputCondition ()
/PDFXRegistryName ()
/PDFXTrapped /False
/Description <<
/CHS
/CHT
本文档为【01 对象和包】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。