版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第5章 面向对象的特性 Object Oriented Techniques 目录 5.1面向对象特性面向对象特性 5.2抽象类抽象类 5.3接口接口 5.4内部类内部类 5.5异常类异常类 5.6泛型类泛型类 5.1 面向对象特性 面向过程的代码面向过程的代码 Procedure call Loose cohesion Tight coupling Redundancy Component B Goto D1 Component D Goto D1 D1: Change V1 to zero V1=V2-A1 Increment V1 Global: V1 V2 Common data ar
2、ea Component ZComponent XComponent Y Component A Component B Control data l Maintainability 可维护性可维护性 l Reusability 可重用性可重用性 l Extensibility 可扩展性可扩展性 Component A Component B Data Structure 5.1 面向对象特性 多态多态 polymorphism 封装封装 Encapsulation 继承继承 Inheritance 抽象抽象 Abstraction 面向对象的代码面向对象的代码 Messaging l Mai
3、ntainability 可维护性可维护性 l Reusability 可重用性可重用性 l Extensibility 可扩展性可扩展性 1封装性 多态多态 polymorphism 继承继承 Inheritance 抽象抽象 Abstraction 封装封装 Encapsulation 封装(封装(Encapsulation) First Principle of OO 通过对象的封装,实现了通过对象的封装,实现了模块化模块化 通过对类和类的成员施以一定的通过对类和类的成员施以一定的访问权限访问权限,实现了,实现了信息信息 隐藏隐藏 javajava中的限定词中的限定词 同一个类同一个类同
4、一个包同一个包不同包的子类不同包的子类不同包非子类不同包非子类 private* default * protected* public* 1封装性 未封装未封装的全局变量的全局变量 Box . x 可以造成系统中所有类之间产生紧耦合可以造成系统中所有类之间产生紧耦合 系统可维护性差系统可维护性差 1封装性 Java中中实例实例变量变量最低限度最低限度的封装的封装 没有封装没有封装x的的身份身份 类的类的public成员构成类的成员构成类的输出输出API 1封装性 隐藏隐藏实例成员变量实例成员变量 添加添加存取方法存取方法 解除对实例成员的耦合解除对实例成员的耦合 x从输出从输出API变成了类
5、的内部实现变成了类的内部实现 封装成员的封装成员的身份身份 getter setter(mutator) 1封装性 x: String ? No Change! x成为成为Box的内部实现的内部实现 不再影响不再影响Client 防止修改防止修改 1封装性 可维护性、冗余性可维护性、冗余性 对于易发生变化的成对于易发生变化的成 员,在内部访问时使员,在内部访问时使 用用存取方法存取方法 类的内部对成员的访问类的内部对成员的访问 1封装性 封装封装引用类型引用类型成员成员 “myBox”在在Room中中 良好的封装了吗?良好的封装了吗? 1封装性 封装封装引用类型引用类型成员成员 boxbox中
6、中x x是局部变量的拷是局部变量的拷 贝,局部变量贝,局部变量x x改变不影响改变不影响 boxbox状态状态 在在Room中进行中进行防御拷防御拷 贝(贝(defensive copy) 1封装性 引用类型引用类型成员的成员的getter方法破坏封装性方法破坏封装性 getter方法破坏了方法破坏了Room对对 Box的封装的封装 1封装性 不可变更类不可变更类 封装性、安全性的考虑封装性、安全性的考虑 不可变更类的实例一旦被创建,其状态就不会发生变化不可变更类的实例一旦被创建,其状态就不会发生变化 String、基本数据类型的类包装器、基本数据类型的类包装器 特点:特点: “private
7、”成员属性成员属性 成员没有成员没有setter方法方法 “final”class “final”成员属性成员属性 通常不提供可变成员的通常不提供可变成员的getter方法方法 通常不在构造函数中引用外部可变对象通常不在构造函数中引用外部可变对象 线程安全线程安全 实例可以被重用(对象池)实例可以被重用(对象池) 享元模式享元模式( flyweight design pattern ) 1封装性 防御拷贝(防御拷贝(defensive copy) 防御拷贝应该在参数有防御拷贝应该在参数有 效性验证效性验证之前之前 参数有效性验证必须针参数有效性验证必须针 对对拷贝后拷贝后的变量的变量 1封装性
8、 防御拷贝(防御拷贝(defensive copy) 返回可变对象的防御拷返回可变对象的防御拷 贝贝 封装性 总结 最大限度的降低数据的可见性最大限度的降低数据的可见性 谨慎设计和输出公共谨慎设计和输出公共API 耦合性耦合性 可维护性可维护性 可扩展性可扩展性 public protected default private exported API implementation package 封装性 总结 公共的类构成了包(一个子系统)的外观公共的类构成了包(一个子系统)的外观 ( faade ) 当一个类只被一个其他类访问的时候,可以作为该当一个类只被一个其他类访问的时候,可以作为该
9、类的内部类类的内部类 ( innner class) 不能因为测试类的正确性,而提高其可见性不能因为测试类的正确性,而提高其可见性 如果包中一个类频繁访问另一个类的成员变量时,如果包中一个类频繁访问另一个类的成员变量时, 应考虑重构设计应考虑重构设计 包对类的封装性包对类的封装性 public class 封装性 总结 类不应该直接暴露成员变量(类不应该直接暴露成员变量(fields) 反例反例:java.awt.Point,java.awt.Dimension 类的成员变量应尽可能设置为私有的(类的成员变量应尽可能设置为私有的(private) “static final”可以设置为公有,但
10、必须为简单类型可以设置为公有,但必须为简单类型 或不可变的引用类型或不可变的引用类型 “protected”会引起成员变为会引起成员变为API的一部分的一部分 根据类是否为可变类型,来提供相应的根据类是否为可变类型,来提供相应的getter和和setter 对于可变的对于可变的引用成员引用成员变量,在构造函数和变量,在构造函数和getter方法方法 中使用防御拷贝中使用防御拷贝 在类的内部对不稳定的属性,使用在类的内部对不稳定的属性,使用getter和和setter访问访问 类对成员的封装性类对成员的封装性 2继承性(Inheritance) 实现实现代码复用代码复用 组合(组合(has-a)
11、 继承(继承(is-a) 把一些类的共性再把一些类的共性再抽取抽取出来,放到一个类中,称为出来,放到一个类中,称为 父类父类 具有特殊属性的新类继承父类的状态和行为,称为具有特殊属性的新类继承父类的状态和行为,称为 子类子类 子类继承了父类的属性和方法子类继承了父类的属性和方法(不包括构造方法不包括构造方法),同,同 时也可以拥有自己的属性和方法时也可以拥有自己的属性和方法 继承具有传递性继承具有传递性 父类可以是父类可以是Java类库中的类,也可以是自己编写的类类库中的类,也可以是自己编写的类 Java中每个类只能有一个直接父类,称为中每个类只能有一个直接父类,称为单继承单继承 2继承性(I
12、nheritance) 2继承性(Inheritance) 我吃素,可脾气我吃素,可脾气 不太好不太好 2继承性(Inheritance) 在狗群中,吠叫声是个在狗群中,吠叫声是个 很重要的事情,该声音很重要的事情,该声音 必须有代表性和独一无必须有代表性和独一无 二性二性 2继承性(Inheritance) 对呀,对呀,LionLion、TigerTiger 和和CatCat之间有共同的部分之间有共同的部分 狼和狗之间也可以狼和狗之间也可以 共享某些东西共享某些东西 2继承性(Inheritance) 它们都是它们都是 猫科动物猫科动物 它们都是它们都是 犬齿动物犬齿动物 2继承性(Inhe
13、ritance) 创建子类创建子类 class SubClass extends SuperClass java中所有的类都是通过直接或间接地继承中所有的类都是通过直接或间接地继承java.lang.Object 类得到的,如果一个类没使用类得到的,如果一个类没使用extends,该类被系统默认为,该类被系统默认为 是是Object类的子类。类的子类。 java不支持多重继承不支持多重继承。 子类不能继承父类中权限为子类不能继承父类中权限为private的成员变量和方法。的成员变量和方法。 2继承性 子类继承父类的变量和方法可以被子类自身定义的方子类继承父类的变量和方法可以被子类自身定义的方
14、法所访问法所访问 子类和父类在同一包中,子类继承父类中不是子类和父类在同一包中,子类继承父类中不是 private的成员变量和方法的成员变量和方法 子类和父类不在同一包中,子类继承父类中的子类和父类不在同一包中,子类继承父类中的 protected, public成员变量和方法成员变量和方法 继承的成员变量及方法的访问权限保持不变继承的成员变量及方法的访问权限保持不变 下面我们看一个下面我们看一个例子例子。 程序的运行结果见下图程序的运行结果见下图 5.3 子类对象的构造过程 当用子类的构造方法创建一个子类的对象时当用子类的构造方法创建一个子类的对象时,子类总子类总 是先调用是先调用父类的构造
15、方法父类的构造方法,如果子类的构造方法中没,如果子类的构造方法中没 有显式指明使用哪一个构造方法,子类调用父类有显式指明使用哪一个构造方法,子类调用父类不带不带 参数参数的构造方法。的构造方法。 (1)将子类中声明的成员变量做为子类对象的成员变)将子类中声明的成员变量做为子类对象的成员变 量量 (2)父类的成员变量也都分配了内存空间,但只将其)父类的成员变量也都分配了内存空间,但只将其 中一部分(继承的那部分)做为子类对象的成员变量。中一部分(继承的那部分)做为子类对象的成员变量。 子类未继承的成员子类未继承的成员 子类未继承的成员子类未继承的成员 引用引用 子类对象子类对象 子类继承的成员子
16、类继承的成员 子类继承的成员子类继承的成员 子类声明的成员子类声明的成员 子类声明的成员子类声明的成员 子类对象内存示意图子类对象内存示意图 5.4 成员的覆盖(隐藏) 子类拥有与父类相同的成员的情况称为覆盖子类拥有与父类相同的成员的情况称为覆盖 (override) 子类通过覆盖父类的子类通过覆盖父类的成员变量成员变量和和方法方法,可以把父,可以把父 类的状态和行为改变为自身的状态和行为。类的状态和行为改变为自身的状态和行为。 成员变量的覆盖:变量名相同成员变量的覆盖:变量名相同 成员方法的覆盖:返回值类型、方法名、形式成员方法的覆盖:返回值类型、方法名、形式 参数都相同参数都相同 5.4.
17、1 成员变量的隐藏(覆盖) 子类中定义的成员变量与父类中的成员变量同名时子类中定义的成员变量与父类中的成员变量同名时 (不必类型相同不必类型相同),子类就隐藏了),子类就隐藏了继承的继承的成员变量成员变量 父类的方法会看到原来的变量,而子类的方法看到的父类的方法会看到原来的变量,而子类的方法看到的 则是新则是新“版本版本”的变量的变量 成员变量的隐藏成员变量的隐藏 例例5-3 成员变量的隐藏(覆盖) 例如:例如:class IntegerCalculator int sum; class DecimalCalculator extends IntegerCalculator double su
18、m; 类类DecimalCalculator 从从IntegerCalculator中继承的方法将中继承的方法将 看到整型变量,而看到整型变量,而DecimalCalculator类中定义的方法则会类中定义的方法则会 看到浮点型变量看到浮点型变量 如果需在如果需在DecimalCalculator类内引用从类内引用从IntegerCalculator 继承得到的同名变量,需要使用继承得到的同名变量,需要使用super int s = super.sum; 5.4.2 方法的覆盖(重写 override) 子类定义一个方法,该方法的名字、子类定义一个方法,该方法的名字、返回类型返回类型、参数个、
19、参数个 数和类型与从父类继承的方法数和类型与从父类继承的方法完全相同完全相同 如果子类重写了父类的方法,就隐藏了继承的方法,子如果子类重写了父类的方法,就隐藏了继承的方法,子 类对象调用该方法则调用的是重写的方法,要调用被隐类对象调用该方法则调用的是重写的方法,要调用被隐 藏的方法则必须使用藏的方法则必须使用super关键字关键字 重写的方法既可以操作继承的成员变量,也可以操作子重写的方法既可以操作继承的成员变量,也可以操作子 类声明定义的成员变量类声明定义的成员变量 子类通过方法的重写可以把父类的状态和行为改变为自子类通过方法的重写可以把父类的状态和行为改变为自 身的状态和行为身的状态和行为
20、 方法重写方法重写例例5-4 【Method1.java】 class A int x; void setX( ) x=0; class B extends A int x; /隐藏了父类的隐藏了父类的 x x void setX( ) x=5; 5.4.2 方法的覆盖(重写 override) 注意:注意: 从从JDK5.0开始,在重写方法时可以返回父类方法开始,在重写方法时可以返回父类方法 返回值类型的子类型返回值类型的子类型 例子:例子:Chicken.java 5.4.2 方法的覆盖(重写 override) 5.4.2 方法的覆盖(重写 override) 方法重写的两种方法重写的两
21、种失败失败情况:情况: 方法名相同,参数个数和类型相同,但返回类型不同方法名相同,参数个数和类型相同,但返回类型不同(或或 不是父类方法返回类型的子类不是父类方法返回类型的子类),出现,出现编译错误编译错误 方法名相同,参数个数和类型有不同,称为重载的方法方法名相同,参数个数和类型有不同,称为重载的方法 重写父类方法时,不可以降低方法的访问权限重写父类方法时,不可以降低方法的访问权限 父类中的一个静态方法可以由子类中的另一个静态方法父类中的一个静态方法可以由子类中的另一个静态方法 所遮蔽,但不能用一个非静态方法来覆盖一个静态方法所遮蔽,但不能用一个非静态方法来覆盖一个静态方法 5.4.3 访问
22、修饰符protected的进一步说明 一个类一个类A A中的中的protectedprotected成员变量和方法可以被它的直接子类成员变量和方法可以被它的直接子类 和间接子类继承,比如和间接子类继承,比如B B是是A A的子类,的子类,C C是是B B的子类的子类 ,D D又是又是C C 的子类,那么的子类,那么B B、C C和和D D类都继承了类都继承了A A的的 protectedprotected成员变量和成员变量和 方法。方法。 如果用如果用D D类在类在D D本身中创建了一个本身中创建了一个D D类的对象(类的对象(在在D D中创建中创建A A的的 对象不一定能访问对象不一定能访问
23、protectedprotected成员,取决于成员,取决于A A和和D D是否在同一是否在同一 个包个包),那么该对象总是可以通过),那么该对象总是可以通过“.”.”运算符访问继承的运算符访问继承的 或自己定义的或自己定义的protectedprotected变量和变量和protectedprotected方法的,但是,如方法的,但是,如 果在另外一个类中,比如果在另外一个类中,比如E E类,用类,用D D类创建了一个对象类创建了一个对象objectobject, 该对象通过该对象通过“.”.”运算符访问运算符访问protectedprotected变量和变量和protectedprotec
24、ted方方 法的权限如下列(法的权限如下列(a a)、()、(b b)所述。)所述。 (a a)子类)子类D D的的protectedprotected成员变量和方法,如果不是从成员变量和方法,如果不是从 父类继承来的,父类继承来的,objectobject访问这些访问这些protectedprotected成员变量和方法成员变量和方法 时,只要时,只要E E类和类和D D类在同一个包中就可以了。类在同一个包中就可以了。 (b b)如果子类)如果子类D D的对象的的对象的protectedprotected成员变量或成员变量或 protectedprotected方法是从父类继承的,那么就要一
25、直追溯到该方法是从父类继承的,那么就要一直追溯到该 protectedprotected成员变量或方法的成员变量或方法的“祖先祖先”类,即类,即A A类,如果类,如果E E类类 和和A A类在同一个包中,类在同一个包中,objectobject对象能访问继承的对象能访问继承的protectedprotected 变量和变量和protectedprotected方法。方法。 例子:例子:ProtectRightProtectRight ProtectSubProtectSub this this用来引用当前变量和方法。用来引用当前变量和方法。 访问成员变量。访问成员变量。 如:this.vari
26、able; 调用方法。调用方法。 如:this.Method(paramlist); 调用类的其他构造方法。调用类的其他构造方法。 如:this(paramlist); 5.5 关键字super java中通过中通过super来实现对来实现对父类成员父类成员的访问,的访问,super用用 来引用当前对象的父类。来引用当前对象的父类。 访问父类被隐藏的成员变量。访问父类被隐藏的成员变量。 如:super.variable; 调用父类中被重写的方法。调用父类中被重写的方法。 如:super.Method(paramlist); 调用父类的构造方法。调用父类的构造方法。 如:super(paraml
27、ist); 例例5-6 、Inheritance. java 、SuperTest.java 5.5 关键字super 注意:注意: 如果在父类中没有无参数的构造函数,则在子如果在父类中没有无参数的构造函数,则在子 类的构造函数中必须用类的构造函数中必须用super显式调用父类的显式调用父类的 某个构造函数某个构造函数 例子:例子:RDemoTest.java 5.5 关键字super 一种常见的做法是子类中的一个覆盖得到的方法完成一一种常见的做法是子类中的一个覆盖得到的方法完成一 些预备的工作,然后再交由父类中的覆盖方法来完成任些预备的工作,然后再交由父类中的覆盖方法来完成任 务务 clas
28、s Animal void eat (Food f) /消化食物消化食物 class Cat extends Animal void eat (Food f) / 检查是否可信用检查是否可信用 super.eat(f); 5.6 final 类和final方法 final final类不能被继承,即不能有子类,如:类不能被继承,即不能有子类,如: final class A final class A 一个方法被修饰为一个方法被修饰为finalfinal方法,则这个方法不能被重写,即方法,则这个方法不能被重写,即 不允许子类通过重写隐藏继承的不允许子类通过重写隐藏继承的finalfinal方法
29、。方法。 5.7 对象的上转型对象 假设,假设,B B是是A A的子类或间接子类,当我们用子类的子类或间接子类,当我们用子类B B创建一个创建一个 对象,并把这个对象的引用放到对象,并把这个对象的引用放到A A类声明的对象引用中时,类声明的对象引用中时, 比如:比如: A aA a; B b = new B();B b = new B(); a=b; a=b; 则则a a是子类对象是子类对象b b的的上转型对象上转型对象,对象的上转型对象的,对象的上转型对象的实实 体是子类负责创建体是子类负责创建的,但上转型对象会失去原对象的一的,但上转型对象会失去原对象的一 些属性和功能。些属性和功能。 5
30、.7 对象的上转型对象 (1 1)上转型对象不能操作子类声明定义的成)上转型对象不能操作子类声明定义的成 员变量;也不能使用子类声明定义的方法。员变量;也不能使用子类声明定义的方法。 (2 2)上转型对象可以调用子类重写的)上转型对象可以调用子类重写的实例实例方方 法。法。 (3 3)上转型对象可以调用子类继承的成员变)上转型对象可以调用子类继承的成员变 量和隐藏的成员变量。量和隐藏的成员变量。 (4 4)可以将对象的上转型对象再强制转换到)可以将对象的上转型对象再强制转换到 一个子类对象,这时,该子类对象又具备了子类一个子类对象,这时,该子类对象又具备了子类 所有属性和功能所有属性和功能 (
31、5 5)如果子类重写了父类中的)如果子类重写了父类中的类类方法,通过方法,通过 上转型对象引用的是父类中的类方法上转型对象引用的是父类中的类方法 对象的上转型对象 可以将对象的上转型对象再可以将对象的上转型对象再强制转换强制转换到一个子类对象,这时,到一个子类对象,这时, 该子类对象又具备了子类所有属性和功能。该子类对象又具备了子类所有属性和功能。 例子例子 Example8.java 不要将父类创建的对象和子类对象的上转型对象混淆。不要将父类创建的对象和子类对象的上转型对象混淆。 子类对象子类对象 对象的上转型对象对象的上转型对象 继承或隐藏的成员变量继承或隐藏的成员变量 继承或覆盖的方法继
32、承或覆盖的方法 新增的变量新增的变量 新增的方法新增的方法 上转型对象的特点图上转型对象的特点图 5.15 内部类(Inner Class) 内部类内部类 匿名类匿名类 1 内部类 定义:内部类是在一个类的内部嵌套定义的类。定义:内部类是在一个类的内部嵌套定义的类。 范围:范围: 可以是其它类的成员可以是其它类的成员 在一个语句块的内部定义在一个语句块的内部定义 在表达式内部匿名定义在表达式内部匿名定义 特性:特性: 一般用在定义它的类或语句块之内,在外部引用它一般用在定义它的类或语句块之内,在外部引用它 时必须给出时必须给出完整的名称完整的名称,名字不能与包含它的类名,名字不能与包含它的类名
33、 相同。相同。 内部类的特性 可以声明为可以声明为abstract 、public、private、default或或 protected 。 内部类都是一个独立的类,编译完后的内部类都是一个独立的类,编译完后的.class文件名以文件名以“外外 部类类名部类类名$内部类类名内部类类名.class”的形式出现的形式出现 编译如下例子:编译如下例子: class Animal class Brain 编译生成了两个编译生成了两个.class文件:文件:Animal.class和和 Animal$Brain.class ; 编译器将内部类创建为一个正常的顶级类,并为之命名编译器将内部类创建为一个正
34、常的顶级类,并为之命名 内部类(Inner Class) 定义:内部类是在一个类的内部嵌套定义的类。定义:内部类是在一个类的内部嵌套定义的类。 种类:种类: 非静态内部类:作为类的成员非静态内部类:作为类的成员 静态内部类:作为类的静态成员静态内部类:作为类的静态成员 局部内部类:存在某个方法内部的类局部内部类:存在某个方法内部的类 匿名类:存在某个类的内部,但无名称的类匿名类:存在某个类的内部,但无名称的类 1.非静态内部类 非静态成员内部类作为外部类或外部接口的成员,非静态成员内部类作为外部类或外部接口的成员, 不带有关键字不带有关键字static。 定义非静态成员内部类等同于定义一个类的
35、非静定义非静态成员内部类等同于定义一个类的非静 态成员属性或方法态成员属性或方法 1.非静态内部类 非静态成员内部类有如下性质非静态成员内部类有如下性质 (1) 在非静态成员内部类中,如果是访问自己定义的属在非静态成员内部类中,如果是访问自己定义的属 性,可以直接访问,也可以通过性,可以直接访问,也可以通过this关键字来访问。关键字来访问。 1.非静态内部类 非静态成员内部类有如下性质非静态成员内部类有如下性质 (2) 在非静态成员内部类中,可以访问外部类的所有在非静态成员内部类中,可以访问外部类的所有 成员,包括成员,包括private修饰的以及修饰的以及静态成员静态成员。 1.非静态内部
36、类 非静态成员内部类有如下性质非静态成员内部类有如下性质 (3) 在非静态成员内部类中,如果外部类和内部类定义的属在非静态成员内部类中,如果外部类和内部类定义的属 性同名,可以通过性同名,可以通过“外部类类名外部类类名.this.外部类成员变量名外部类成员变量名” 的形式来访问。的形式来访问。 1.非静态成员内部类 非静态成员内部类有如下性质非静态成员内部类有如下性质 (4) 在非静态成员内部类中,不能声明静态成员。在非静态成员内部类中,不能声明静态成员。 1.非静态成员内部类 非静态成员内部类的实例化非静态成员内部类的实例化 只有创建了外部类对象的情况下才能创建非只有创建了外部类对象的情况下
37、才能创建非静态静态内部内部 类对象类对象。 2. 静态内部类 用用static修饰的内部类叫静态内部类修饰的内部类叫静态内部类 静态内部类相当于是一个外部定义的类,可声明静态成员或非静态内部类相当于是一个外部定义的类,可声明静态成员或非 静态成员静态成员 2. 静态内部类 静态内部类可以被视为顶层类的静态成员,可在不创建顶层类静态内部类可以被视为顶层类的静态成员,可在不创建顶层类 对象的情况下被使用,这是与非静态内部类的区别对象的情况下被使用,这是与非静态内部类的区别 2. 静态内部类 静态内部类只能访问外部类的静态变量或静态方法,非静态的静态内部类只能访问外部类的静态变量或静态方法,非静态的 不能访问不能访问 2. 静态内部类 静态内部类可以作为接口的一部分静态内部类可以作为接口的一部分 3. 局部内部类 局部内部类也叫方法内部类,即在方法内部定义的内部类局部内部类也叫方法内部类,即在方法内部定义的内部类 不能用访问修饰符修饰,只能加不能用访问修饰符修饰,只能加final、abstract修饰修饰 3. 局部内部类 局部内部类有如下性质局部内部类有如下性质 (1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 采购部进料及时性制度
- 采购部采买制度范本
- 采购配件登记管理制度
- 采购隆价率管理制度
- 采购验收内控流程制度
- 金融公司采购评审制度
- 钢管绿色采购标准制度
- 2025年前台沟通技巧专项试卷
- 高压脉冲工况下低失调轨对轨比较器设计与应用
- 第19章 二次根式 单元测试(原卷版A4)-人教版(2024)八下
- (广东一模)2026年广东省高三高考模拟测试(一)英语试卷(含官方答案)
- 食品安全管理制度
- 复工复产安全检查表
- 第三章表面活性剂的功能与应用
- 烹饪化学教程课件
- 心理学主要理论流派课件讲义
- 延1024井马五层酸化压裂设计
- 采矿学I第四章-矿石的损失和贫化课件
- 部编版六年级下册道德与法治全册优秀课件
- 中国经典广告案例评析之公益广告课件
- EPC合同条件(银皮书)-1999
评论
0/150
提交评论