




已阅读5页,还剩70页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章面向对象的编程(I基本语法),应该重点掌握以下内容:面向对象程序设计的基本概念类和对象的定义和使用类中方法的定义和使用构造函数的定义和使用访问控制,目录,3.1面向对象程序设计概述3.2类的定义3.3类中的方法3.4方法中的参数传递3.5访问控制,3.1面向对象程序设计概述,面向对象程序设计方法是一种以对象为中心的思维方式。它包括以下几个主要概念:抽象、对象、类和封装、继承、多态性、消息、结构与关联。3.1.1面向对象方法的特征不同于面向过程的程序设计中以“数据结构+算法”为研究和实现的主体,面向对象的程序设计是以解决问题域中所设计的各种对象为中心的。(1)抽象抽象就是抽出事物的本质特性而暂时不考虑它们的细节。,(2)对象对象是客观世界存在的具体实体,具有明确定义的状态和行为。对象可以是有形的如:一本书、一只钟表等。也可以是无形的如:记账单、一项记录等。对象是封装了数据结构及可以施加在这些数据结构上的操作的封装体。属性和操作是对象的两大要素。属性是对象静态特征的描述,操作是对象动态特征的描述。,(3)类类是一组具有共同特性的所有对象成员的集合。它是一个抽象的概念。类是对象模版,用于创建具有相同属性和相同操作(服务)的对象。它包括属性和方法(注:类的服务、行为和操作只是叫法上的区别)。,如学生类的声明:,类一旦确定下来,就可以构建系统实现所需的各种对象,实例化就是指在类定义的基础上构造对象的过程。如“学生”类定义后,就可以创建许多该类的对象/实例,如同现实世界中利用点心模子可以做出许多点心一样。见下图学生类和学生类的一个具体对象。,(4)封装封装是把对象的属性和操作结合在一起,构成一个独立的封装体。封装性也就是信息隐藏,通过封装把对象的实现细节对外界隐藏起来了。(5)继承继承使得一个类可以继承另一个类的属性和方法。这样通过抽象出共同的属性和方法组建新的类,便于代码的重用。如下图电梯系统中电梯按钮和楼层按钮的层次关系。,子类电梯按钮和楼层按钮继承了父类Button的全部属性和服务,同时又具有自身新的属性和服务。,(6)多态性多态性是指不同类型的对象接收相同的消息时产生不同的行为。如电梯系统中,当向按钮对象发送消息pressButton()时,不同按钮对象如电梯内部按钮(ElevatorButton)和楼层按钮(FloorButton)会自动判断自己的所属类并执行相应的服务。(7)消息向某个对象发出的服务请求称作消息。对象提供的服务的消息格式称作消息协议。包括:被请求的对象标识、被请求的服务标识、输入信息和应答信息。如向电梯按钮类发送请求按下电梯按钮的消息elvatorButton.pressButton()。,(8)结构与关联对象间存在着各种各样的关系。其主要包括部分/整体、一般/特殊、实例连接、消息连接。部分/整体,该关系中有两种方式:组合和聚集。组合关系中部分和整体的关系很紧密。聚集关系中则比较松散,一个部分对象可以属于几个整体对象。如下图组合关系。,一般/特殊,也就是继承关系。有时称作泛化和特化关系。如前面电梯系统中的继承关系。实例连接。实例连接表现了对象之间的静态联系。对象之间的实例连接称作链接,对象类之间的实例连接称作关联。消息连接。消息连接表现了对象之间的动态联系,它表现了这样一种联系:一个对象发送消息请求另一个对象的服务,接收消息的对象响应消息,执行相应的服务。,3.2.1类的声明类可理解成java一种新的数据类型,这种数据类型中封装了数据的内容和对数据内容的操作。类的基本定义方法如下:修饰符class类名extends父类implements接口名类成员变量声明类方法声明,3.2类的定义,例如图书管理系统中有关图书类的声明如下:publicclassBookDetailsprivateStringname;privatedoubleprice;publicvoidsetName(Stringname);publicvoidsetPrice(doubleprice);其中:public、private为修饰符,可修饰类和方法,分别代表公有和私有的修饰,具体含义可见后继说明。,1修饰符(1)类的修饰符说明了类的属性,分为访问控制符、抽象类说明符和最终类说明符。访问控制符:public公共类、private私有类、protected受保护类。public(公共)后续定义的任何类均可访问。private(私有)仅能被类自身的内部函数成员访问,其他任何类都不能直接访问。protected(受保护的)同private,但能被继承类访问受保护的成员,不能被访问私有成员。如没有前三种修饰,系统默认为friendly(友好的)类型,意味着它只能被同一个包的中的类直接使用,但并不存在该关键字。抽象类说明符:abstract抽象类。abstract不仅用于类的声明,也适用于方法。当用于类的声明时,则该类不能创建对象;,最终类说明符:final最终类。final不仅用于类的声明,也适用于变量或方法。当用于类的声明时,则该类不能有子类;当用于变量声明时,该变量最初赋予的初值在以后的调用中只能引用不能被修改;同样声明为final的方法,在以后只能使用不能重载。(2)class类的修饰符后面的class标志一个类定义的开始(注意不将class写成Class),class后面应跟新定义的类的名字,类名应符合java对标识符的有关规定,能体现该类的主要功能或作用。,(3)extends该关键字后面为类的父类的名字,用来说明当前类是哪个已经存在类的子类,存在继承关系。继承是类与类之间的一种非常重要的关系。(4)implements该关键字后面为类所实现的接口列表,用来说明当前类中实现了哪个接口定义的功能和方法。接口是Java语言用来实现多重继承的一种特殊机制,我们将在后面详细介绍它的使用方法。,2成员变量的声明(类的属性)类的属性描述该类的内部信息,又称类的静态属性。一个类的属性可以是简单数据变量,也可以是其他类的对象,或数组等其他复杂的数据结构。成员变量的声明方式如下:public|protected|privatestaticfinaltransientvolatiletypevariableName;其中:static:静态变量(类变量;相对于实例变量)final:常量transient:暂时性变量,串行化该对象时将排除该变量volatile:共享变量,用于并发线程的共享type:变量类型variableName:变量名称,(1)Java中声明类属性为简单变量的语法修饰符变量类型变量名=变量初值,.变量名=初值;修饰符为public、private和protected;变量的类型是简单数据类型,如String、int、double等或其他复杂类型。如图书管理系统中有关图书类的属性声明如下:classBookDetailsprivateStringname=“java面向对象程序设计”;/书名privatedoubleprice=50.0;/定价,(2)Java中声明类属性为对象的语法修饰符变量类型变量名=new类名(实际参数列表)变量初值;修饰符可见上面类头的声明;类名代表该类可以包含另一个类的对象。例如图书详细信息类中属性为类对象的声明如下:publicclassBookDetailsDialogextendsJDialogprotectedBookDetailsbook;/声明图书类BookDetails的对象protectedFrameparent;/声明框架Frame的对象parentprotectedJTablebookInLibTable;/声明标签Jtable的对象bookInLibTable,3成员方法的声明类的方法,有称类的成员函数,用来规定类属性上的操作。方法的实现包括两部分内容:方法声明和方法体。public|protected|privatestaticfinal|abstractnativesynchronizedreturnTypemethodName(paramList)throwsexceptionList/方法声明statements/方法体其中:static:类方法,可通过类名直接调用abstract:抽象方法,没有方法体final:方法不能被重写native:集成其它语言的代码synchronized:控制多个并发线程的访问例java中应用程序主类的方法:publicstaticvoidmain(Stringargs)。,3.2.2创建类的实例对象对象是类的一个实例,在程序中创建个对象时,将在内存中开辟一块存储空间,其中包括该对象的属性和方法。创建对象使用关键字运算符new,例如下面的语句将创建BookDetails的对象:BookDetailsbook=newBookDetails();/无初始值的book对象BookDetailsbook=newBookDetails(7-5084-1798-4,高等数学,李玉,高等教育出版社,29);/有初始值的book对象,【例3-1】自定义类BookDetails,创建并使用类BookDetails的三个对象。注释:本程序的功能是定义一个图书类BookDetails,并声明一个具有三个元素的数组,数组中的每个元素都是BookDetails的对象,并输出三个BookDetails对象的具体信息。,文件名:test_BookDetails.java,3.3.1方法的声明Java中声明方法的语法如下:修饰符返回值类型方法名(参数列表)throws例外名1,例外名2,/方法体局部变量声明;语句序列;,3.3类中的方法,方法头一般由方法名、返回类型、参数列表、方法修饰符和方法抛出的例外五部分组成。本节只讲述方法的基本声明,而方法修饰符的使用和方法抛出的例外见其他章节。方法名可以是任何有效的标识符,命名规则与标识符命名规则相同。返回值类型说明符用来指定方法返回值的类型,方法最多只能返回一个值。,参数列表是方法接收的外来参数,它列出了一系列形式参数的类型和名称,参数列表必须包括在方法名后面的小括号里,参数列表可以为空,如果参数列表中有多个形式参数,则参数表以逗号为分隔符,在方法参数表的右括号后加一个分号是语法错误。方法调用时必须有一个实际参量与形式参数一一对应,而且实参变量的类型必须与对应形式参数类型相一致。,3.3.2方法的创建在java中可直接在类外对类中公有的数据成员赋值,但从数据安全的角度考虑,大多时候都必须在类中定义不同的方法来存取类定义的实例变量。如例3-1图书管理系统中BookDetails类中定义方法如下:publicvoidsetAuthors(StringAuthors)/设置图书的作者名authors=Authors;publicStringgetAuthors()/返回图书的作者名returnauthors;,3.3.3方法的调用类自身的方法,可以直接使用这个方法的名称;调用其他对象或类的方法,则需要使用该对象.方法()或类.方法()(类为静态的)。例如在BookDetails类中为数据成员isbn赋值的方法setIsbn()和获取isbn的getIsbn()方法中的调用book.setIsbn(7-5643-89);book.getIsbn();在java程序设计中称这种方法的调用叫“向对象发送一条消息”,在上面的例子中消息分别是setIsbn()和getIsbn(),而对象时book。,3.3.4构造函数1.构造函数的概念要使用对象,首先必须构造它们,并指定它们的初始状态,然后将方法应用于对象。在Java程序设计语言中,使用构造函数(constructor)来构造类的实例。一个构造函数是类的一个特殊方法,它的作用是构造并初始化对象。构造函数的特殊性体现在以下几个方面:构造函数的方法名与类名相同。构造函数没有返回类型,但可携带0个、1个或多个参数。构造函数的主要作用是完成对类对象的初始化工作。构造函数不能由编程人员显式地直接调用。当new一个类的新对象时,系统会自动调用该类的构造函数为新构造对象初始化。构造函数可以重载,2.创建构造函数构造函数语法格式:()/方法体其中:修饰符为类声明中的public、protected、privateargu_list为参数,可以为空statements构造函数的语句体,也可为空,首先看例3-1中的BookDetails类的构造函数:classpublicBookDetails.BookDetails(Stringisbn,Stringname,Stringauthors,Stringpublisher,doubleprice)/带参数的构造函数,完成每个对象的初始值的赋值isbn=Isbn;name=Name;authors=Authors;publisher=Publisher;price=Price;.,构造函数的名字和类的名字是相同的。当构造BookDetails类的对象时,此构造函数被启动,为每一个对象的数据成员赋初值。如语句:book2=newBookDetails(“7-5084-1798-4”,“高等数学”,“李玉”,“高等教育出版社”,29)则创建BookDetails类的一个对象book2时,系统自动调用构造函数为该对象赋初值。结果如下:isbn=7-5084-1798-4name=高等数学authors=李玉publisher=高等教育出版社price=29,3.构造函数的作用(1)对象初始化构造函数是创建对象时为对象赋初值。(2)引入更多的灵活度(变量赋值或更复杂的操作)通过给构造函数设置不同的自变量,也就是通过方法的重载(overload)来为一个类提供多个不同的构造函数,为类的不同对象赋不同的初始值。(3)Java中可以不定义构造函数如果类的定义者没有显式的定义任何构造方法,系统将自动提供一个默认的构造方法:默认构造方法没有参数默认构造方法没有方法体Java类中,一旦类的定义者显式定义了一个或多个构造方法,系统将不再提供默认的构造方法。,Java可用垃圾收集器回收由不再使用的对象占据的内存。但垃圾收集器只知道释放那些由new分配的内存,所以不知道如何释放对象的“特殊”内存。为解决这个问题,Java提供了一个名为finalize()的方法,可为我们的类定义它。要给一个类增加终结(finalizer),只需要定义finalize()方法即可。Java回收该类的一个对象时,就会调用这个方法。在finalize()方法中指定对象撤销前必须执行的操作,这样在对象释放之前,java运行系统调用该对象的finalize()方法。,3.3.5finalize()方法的作用,使用finalize()方法的一般格式如下:protectedvoidfinalize()/finalizationcodehere其中关键字protected是防止该类之外的其他对象或代码访问该方法。在Java中没有用于销毁和清理对象的析构函数,Java提供了垃圾回收(GarbageCollection,简称gc)机制负责释放对象所占用的内存空间及相关的其它资源。,3.4.1参数传递的方式对于简单数据类型来说,java实现的是值传递,方法接收参数的值,但不能改变这些参数的值。如果要改变参数的值,则用引用数据类型,因为引用数据类型传递给方法的是数据在内存中的地址,方法中对数据的操作可以改变数据的值。【例3-2】简单数据类型与引用数据的区别。,3.4方法中的参数传递,文件名:test_simpleRef.java,3.4.2对象作为参数的传递对象也可以作为实参传递给方法。如下面的简单程序。【例3-3】对象作为实参传递的实例。,文件名:test_parameter_object.java,3.4.3命令行参数的使用main()方法是一个重要而又特殊的方法。它是Java应用程序的入口,JVM在运行字节码文件时,做完初始化之后,就会查找main()方法,从这里开始整个程序的运行。在main()方法的括号里面有一个形式参数“Stringargs”,args是一个字符串数组,可以接受系统所传递的参数,而这些参数则来自于用户的输入。在命令行执行一个程序通常的形式是:java类名参数列表其中的参数列表中可以容纳多个参数,参数间以空格或制表符隔开,它们被称为命令行参数。,系统传递给main()方法的实际参数正是这些命令行参数。由于Java中数组的下标是从0开始的,所以形式参数中的args0,argsn-1依次对应第1,n个参数。下面这个例子展示了main()方法是如何接收这些命令行参数的。【例3-4】命令行参数使用的实例。,文件名:test_commandLine_arguments.java,3.5.1java中的访问控制在面向对象程序设计时,如何使某些类对象的数据和成员不被其他对访问,以保证数据的隐私和信息隐藏,在Java中引入了“访问控制修饰符”的概念,通过修饰符的限定使得信息隐藏得以实现。Java中类的访问控制符有public、protected、private和缺省值(无关键字),下面给出java中访问控制符的含义:,3.5访问控制,1public访问控制符一个类被声明为公共类,表明它可以被所有的其他类所访问和引用,这里的访问和引用是指这个类作为整体对外界是可见和可使用的,程序的其他部分可以创建这个类的对象、访问这个类内部可见的成员变量和调用它的可见的方法。一个类作为整体对程序的其他部分可见,并不能代表类内的所有属性和方法也同时对程序的其他部分可见,前者只是后者的必要条件,类的属性和方法能否为所有其他类所访问,还要看这些属性和方法自己的访问控制符。,2缺省访问控制符假如一个类没有访问控制符,说明它具有缺省的访问控制特性。这种缺省的访问控制权规定该类只能被同一个包中的类访问和引用,而不可以被其他包中的类使用,这种访问特性称为包访问性。通过声明类的访问控制符可以使整个程序结构清晰、严谨,减少可能产生类间干扰和错误。,3private私有访问控制符用private修饰的属性或方法只能被该类自身所访问和修改,而不能被任何其他类,包括该类的子类,来获取和引用。如图书管理系统中图书类BookDetails中的私有数据privateStringisbn;/ISBN号privateStringname;/书名private对这些属性的修饰确保他们只能被本类BookDetails自身的方法访问,任何其他类的方法无法访问这些属性。方法大多数是公有的,但是私有方法也经常使用。这些私有的方法只能被同一个类的方法调用。,4protected保护访问控制符用protected修饰的成员变量可以被类自身、与它在同一个包中的其他类、在其他包中的该类的子类。如下表所示:,3.5.2static关键字的使用static是静态修饰符,可以修饰类的属性,也可以修饰类的方法。被static修饰的属性不属于任何一个类的具体对象,是公共的存储单元。任何对象访问它时,取得的都是相同的数值。当需要引用或修改一个static限定的类属性时,可以使用类名,也可以使用某一个对象名,效果相同。,1静态属性定义静态数据的简单方法就是在属性的前加上static关键字。例如,下述代码能生成一个static数据成员,并对其初始化:classStaticTeststaticinti=47;StaticTestst1=newStaticTest();StaticTestst2=newStaticTest();此时,无论st1.i还是st2.i都有同样的值47,因为它们引用的是同样的内存区域。上述例子采用对象引用属性的方法,也可直接通过类直接使用该类的静态属性。正如上面展示的那样,可通过一个对象命名它,如st2.i。亦可直接用它的类名引用,如StaticTest.i,而这在非静态成员里是行不通的。,StaticTest.i+;其中,+运算符会使静态变量i的值增加1。此时,无论st1.i还是st2.i的值都是48。通样对静态方法而言既可通过一个“对象”引用静态方法,亦可用“类名.方法()”加以引用。如类中添加静态方法的incr()后的类:classStaticTeststaticvoidincreat()StaticTest.i+;调用incr()方法可以通过对象加以调用,具体代码段如下:StaticTestst1=newStaticTest();st1.incr();也可以通过类名直接调用该静态的方法。具体代码如下:StaticTest.incr();,2静态代码块在类中,也可以将某一块代码声明为静态的,这样的程序块叫静态初始化段。静态代码块的一般形式如下:static语句序列,如下面代码定义一个静态代码块static/这是一个局部变量,只在本块内有效intstVar=12;System.out.println(Thisisstaticblock.+stVar);编译通过后,用java命令加载本程序,程序运行结果首先输出:Thisisstaticblock.12接下来才是main()方法中的输出结果,由此可知静态代码块甚至在main方法之前就被执行。,3静态方法(1)静态方法的声明和定义在声明为静态的方法头加上一个关键字static。它的一般语法形式如下:访问权限修饰符static返回值类型方法名(参数列表)语句序列例如java主控类的main()方法的定义:publicstaticvoidmain(Stringargs)System.out.println(java主类的静态的main()方法);,(2)静态方法和非静态方法的区别静态方法和非静态方法的区别主要体现在两个方面:在外部调用静态方法时,可以使用“类名.方法名”的方式,也可以使用“对象名.方法名”的方式。而实例方法只有后面这种方式。静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),不能访问非静态的成员变量。【例3-5】静态方法访问成员变量的实例。,文件名:test_accessStatic.java,3.5.3final关键字的使用1.final成员当变量前面加上final关键字,那就是说该变量一旦被初始化便不可改变,对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变。其初始化可以在两个地方,一是其定义处,也就是说在final变量定义时直接给其赋值,二是在构造函数中。不能同时既在定义时给了值,又在构造函数中给另外的值。如下面程序代码:,publicclasstest_finalfinalPI=3.14;/定义final变量时便给数值finalintI;/在构造函数中对final变量初始化,定义时不能再赋初值publictest_final()I=100;上述类很简单的演示了final的常规用法。这样在程序的随后部分会可以直接使用这些变量,就像他们是常数一样。,2.final方法将方法声明为final,那就说明该方法不需要进行扩展,也不允许任何从此类继承的类来覆写这个方法,但是可以继承这个方法,也就是说可以直接使用。3.final类当将final用于类身上时,那就意味着此类在一个继承树中是一个叶子类,并且此类的设计已被认为很完美而不需要进行修改或扩展。,本章主要介绍了java中有关类的定义,类中属性和方法的声明。其中方法是类对外提供的接口,类与类之间的交流时通过类中方法而实现的,因此着重介绍了方法的定义、方法的调用以及方法调用过程中参数的传递,另外也详细介绍了类的特殊方法构造函数的创建及使用。最后又介绍了java中访问控制的实现和几个主要关键字的使用。,本章小结,importjava.io.*;publicclasstest_BookDetailspublicstaticvoidmain(Stringargs)/主类的main方法/构造一个图书BookDetails数组,并给他赋三个图书BookDetails对象BookDetailsbook=newBookDetails3;book0=newBookDetails(7-5084-1798-4,软件工程,张海藩,清华大学出版社,34);book1=newBookDetails(7-5084-1798-7,java程序设计语言,王海,西安电子出版社,27);book2=newBookDetails(7-5084-1798-4,高等数学,李玉,高等教育出版社,29);System.out.println(三个图书对象的输出信息如下:);for(inti=1;istaff.length+1;i+)/输出每本图书的信息BookDetailse=booki-1;/获取每个图书对象System.out.println(第+i+本图书的信息:+e.getIsbn()+e.toString()+e.getPrice();,【例3-1】自定义类BookDetails,创建并使用类BookDetails的三个对象。,for(inti=0;ibook.length;i+)/修改图书对象的价格信息staffi.setPrice(staffi.getPrice()+5);System.out.println(价格修改后的三个图书对象的输出信息如下:);for(inti=1;ibook.length+1;i+)/输出每本图书的信息BookDetailse=booki-1;/获取每个图书对象System.out.println(第+i+本图书的信息:+e.getIsbn()+e.toString()+e.getPrice();,classBookDetails/图书类privateStringisbn;/ISBN号privateStringname;/书名privateStringauthors;/作者privateStringpublisher;/出版信息,包括出版地点、出版社名、出版日期privatedoubleprice;/定价publicBookDetails()/无参的构造函数,publicBookDetails(StringIsbn,StringName,StringAuthors,StringPublisher,doublePrice)/带参的构造函数,完成每个对象的初始值的赋值isbn=Isbn;name=Name;authors=Authors;publisher=Publisher;price=Price;publicStringgetIsbn()/返回图书的isbnreturnisbn;,publicvoidsetIsbn(StringIsbn)/设置图书的isbnisbn=Isbn;publicStringgetName()/返回图书的名称returnname;publicvoidsetName(StringNme)/设置图书的名称name=Name;publicStringgetAuthors()/返回图书的作者名returnauthors;publicvoidsetAuthors(StringAthors)/设置图书的作者名authors=Authors;,publicStringgetPublisher()/返回图书的出版社returnpublisher;publicvoidsetPublisher(StringPblisher)/设置图书的出版社publisher=Publisher;publicdoublegetPrice()/返回图书的价格returnprice;publicvoidsetPrice(doublePrice)/设置图书的价格price=Price;publicStringtoString()/返回图书的基本信息,如作者、出版社等returnname+,+authors+,+publisher;,程序输出结果如图所示(点击图片返回该程序的调用处),classSimpleRefTypefloatValue;publicvoidchangeInt(intvalue)/修改值参数的方法value=34;publicvoidchangeRef(SimpleRefTypett)/修改引用参数的方法tt.Value=45.6f;,【例3-2】简单数据类型与引用数据的区别。,publicclasstest_simpleRefpublicstaticvoidmain(Stringargs)intval;val=33;System.out.println(val的初值为:+val);SimpleRefTypett=newSimpleRefType();/创建SimpleRefType的对象tt.changeInt(val);/修改值参数的方法调用/值参数值的修改,没有影响值参数的值System.out.println(调用方法changeInt()后val的初值为:+val);/引用参数Value的调用tt.Value=12.6f;System.out.println(类的成员Value的初值为:+tt.Value);tt.changeRef(tt);/引用类型的参数方法调用/引用参数值的修改,改变了引用参数的值System.out.println(引用方法changeRef()调用后Value的值为:+tt.Value);,程序输出结果如图所示:(点击图片返回程序的调用处),【例3-3】对象作为实参传递的实例。,importjava.io.*;importjavax.swing.JOptionPane;classBookInLibrary/书库类privateStringbookName;/书名privateStringbookAuthor;/作者privateintbookPages;/书的页数privatebooleanavailable;/可借的状态,为true则可借,反之不能借阅BookInLibrary(Stringname,Stringauthor,intpages,booleanstatus)bookName=name;bookAuthor=author;bookPages=pages;available=status;,publicvoidisAvailable()/判断图书是否可借的方法if(available=true)System.out.println(该图书可以借阅!);elseSystem.out.println(该图书不可以借阅!);publicStringtoString()/输出图书基本信息的方法return(bookName+bookAuthor+String.valueOf(bookPages)+String.valueOf(available);,classBorrower/借阅者类/Borrowe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO 22504:2025 EN Oil and gas industries including lower carbon energy - Pipeline transportation systems - Onshore and offshore pipelines pig traps design requirements
- 液温考试试题及答案
- 莆田哲理考试题及答案
- 机车制动试题及答案
- 校园安全知识培训课件图片
- 神经阻滞考试题及答案
- 安永税务面试题及答案
- 高一语文期末考试题及答案
- 押运员实体考试试题及答案
- 票据试题及答案答案
- GB/T 45411.1-2025光学和光子学瞄准望远镜规范第1部分:普通性能仪器
- 外销出口流程培训
- 房屋建筑工程竣工验收技术资料统一用表(2024 版)
- 《企业研发费用税前加计扣除政策解读与应用课件》
- 《马斯克英文介绍》课件
- OptiStruct结构分析与工程应用
- GA/T 1280-2024银行自助设备安全性规范
- 带状疱疹后神经痛的诊治课件
- 火灾地震逃生演练课件
- 广东省深圳市2024-2025学年高一上学期期中考试数学试卷(含答案)
- 第6讲立体几何(2022-2023年高考真题)(原卷版)
评论
0/150
提交评论