面向对象程序设计.ppt_第1页
面向对象程序设计.ppt_第2页
面向对象程序设计.ppt_第3页
面向对象程序设计.ppt_第4页
面向对象程序设计.ppt_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章Java的面向对象程序设计,面向对象程序的概念类(class)对象(object)static关键字this关键字包(package)访问权限类的继承对象的上转型对象多态性,abstract类和abstract方法super关键字接口(interface)内部类匿名类异常类Class类基本类型的类包装反编译和文档生成器jar文件,3.1面向对象程序的概念,机器语言(如汇编语言)计算机处理信息的早期语言是所谓的机器语言,这种语言中的指令都是由0,1组成的序列,称这样的序列为一条机器指令。过程语言语言把代码组成叫做过程或函数的块。每个块的目标是完成某个任务,例如,一个C的源程序就是由若干个书写形式互相独立的函数组成。面向对象编程面向对象编程主要体现下列三个特性:1.封装性(Encapsulation)2.继承性(Inheritance)3.多态性(Polymorphism)Java语言是面向对象语言,它的源程序是由若干个类组成,源文件是扩展名为.java的文本文件,3.2类(class),class是组成Java程序的基本要素。类封装了一类对象的状态和方法。类是用来定义对象的模板。类的结构分为两个两部分:类声明(ClassDeclaration)和类体(ClassBody),格式如下:类声明类体;如,publicclassPeopleStringname;.,1.类声明(ClassDeclaration),类声明的格式:类修饰符class类名extends父类名implements接口表列类体;类声明由关键字class、类名、类修饰符三部分组成关键字class用固定的小写字母格式类名:符合Java书写规范的标识符类修饰符:可选,可以为public、缺省、abstract、final,用于说明类的访问控制“publicclassPeople”叫做类声明“People”是类名。习惯上类名的第一个字母大写,但不是必须的,2.类体(ClassBody),写类的目的是为了描述一类事物共有的属性和功能,描述过程由类体来实现。类声明之后的一对大括号“”,“”以及它们之间的内容称做类体,大括号之间的内容称做类体的内容。类体的内容由两部分构:一部分是变量的定义,用来刻画属性;另一部分是方法的定义,用来刻画类的功能。,class梯形float上底,下底,高,laderArea;/变量定义部分float计算面积()/方法定义laderArea=(上底+下底)*高/2.0f;returnladerArea;void修改高(floath)/方法定义高=h;,3.成员变量和局部变量(MemberVariables修饰符:pubic、private、protected、默认(友好型),static(类变量),final(常量)变量类型:可以是简单类型、数组类型、类(String、Date、第三方类、自定义类)类型变量名:合法的Java标识符局部变量定义:变量类型变量名;变量类型:可以是简单类型、数组类型、类(String、Date、自定义类)类型变量名:合法的Java标识符,class三角形floatsideA,sideB,sideC,lengthSum;voidsetSide(floatsideA,floatsideB,floatsideC)this.sideA=sideA;this.sideB=sideB;this.sideC=sideC;其中,this.sideA、this.sideB、this.sideC就分别表示成员变量sideA、sideB、sideC,4.方法(Method),方法的概念描述对象所具有的功能或操作,反映对象的行为,是具有某种相对独立功能的程序模块方法的类型从来源看:类库方法、用户自定义方法从参数个数看:无参方法、有参方法方法定义的格式(方法声明、方法体)修饰符返回值类型成员方法名(形参表)throws异常表方法体;修饰符:pubic、private、protected、默认(友好型),static(静态方法),final(最终方法),abstract(抽象方法),native(本地方法)返回值类型:简单类型、数组类型、void型、类(String、Date、其他类)类型形参表:格式为(形参类型1形参变量1,形参类型2形参变量2,.),javanative方法是指本地方法,当在方法中调用一些不是由java语言写的代码或者在方法中用java语言直接操纵计算机硬件时要声明为native方法。java中,通过JNI(JavaNativeInterface,java本地接口)来实现本地化。,5.方法的参数(Arguments),方法的参数在整个方法内有效,方法内定义的局部变量从它定义的位置之后开始有效;如果局部变量的定义是在一个复合语句中,那么该局部变量的有效范围是该复合语句,即仅在该复合语句中有效;如果局部变量的定义是在一个循环语句中,那么该局部变量的有效范围是该循环语句,即仅在该循环语句中有效写一个方法和C语言中写一个函数类似,只不过在这里称做方法,6.方法重载(Overload),方法重载的意思是:一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。,classAreafloatgetArea(floatr)return3.14f*r*r;doublegetArea(floatx,inty)returnx*y;floatgetArea(intx,floaty)returnx*y;doublegetArea(floatx,floaty,floatz)return(x*x+y*y+z*z)*2.0;,7.构造方法(Constructor),构造方法是一种特殊方法,主要作用是在类创建对象时进行初始化。当用类创对象时,使用构造方法构造方法的名字必须与它所在的类的名字完全相同,而且没有类型;用户不能直接调用构造方法;构造方法是在用户创建对象时,由系统自动调用执行构造方法的作用是对类对象进行初始化;构造方法也可以重载。类中可以不定义构造方法,系统将为该类默认定义一个构造方法,即默认构造方法。用默认构造方法初始化对象时,系统用默认值初始化对象的数据成员。,构造方法(Constructor),class梯形float上底,下底,高;梯形()梯形(floatx,floaty,floath)上底=x;下底=y;高=h;,8.类方法和实例方法,类中的方法分为实例方法和类方法方法声明时,方法类型前面不加关键字static的是实例方法、加关键字static的是类方法。构造方法是特殊的方法,不能用static修饰构造方法。类方法可以通过类名直接引用,实例方法必须通过类的对象来引用,3.3对象,类是创建对象的模板。当使用一个类创建了一个对象时,我们也说我们给出了这个类的一个实例。,1.创建对象,创建一个对象包括对象的声明和为对象分配内存两个步骤(1)对象的声明一般格式为:类的名字对象名字;如:PeoplezhangPing;(2)为声明的对象分配内存使用new运算符和类的构造方法为声明的对象分配内存,如果类中没有构造方法,系统会调用默认的构造方法(默认的构造方法是无参数的,你一定还记得构造方法的名字必须和类名相同这一规定)。如:zhangPing=newPeople();,下面举例说明对象的内存模型classXiyoujiRenwufloatheight,weight;Stringhead,ear,hand,foot,mouth;voidspeak(Strings)System.out.println(s);classTestpublicstaticvoidmain(Stringargs)XiyoujiRenwuzhubajie;/声明对象zhubajie=newXiyoujiRenwu();/为对象分配内存,/使用new运算符和默认的构造方法,2.对象的内存模型,3.声明对象时的内存模型,当用XiyoujiRenwu类声明一个变量,即对象zhubajie后,XiyoujiRenwuzhubajie;此时,变量zhubajie内存模型如左图所示:,4.对象分配内存后的内存模型,当系统执行到zhubajie=newXiyoujiRenwu();时,就会做两件事:为height,weight,head,ear,mouth,hand,foot各个变量分配内存,即XiyoujiRenwu类的成员变量被分配内存空间,然后执行构造方法中的语句。new运算符在为变量height,weight,head,ear,mouth,hand,foot分配内存后,将返回一个引用给对象变量zhubajie。,5.使用对象,对象不仅可以操作自己的变量改变状态,而且还拥有了使用创建它的那个类中的方法的能力,对象通过使用这些方法可以产生一定的行为。通过使用运算符“.”,对象可以实现对自己的变量访问和方法的调用。当对象调用方法时,方法中出现的成员变量就是指该对象的成员变量。,6.对象的引用和实体,当用类创建一个对象时,类中的成员变量被分配内存空间,这些内存空间称做该对象的实体,而对象中存放着引用,以确保实体由该对象操作使用。一个类创建的两个对象,如果具有相同的引用,那么就具有完全相同的实体。没有实体的对象称作空对象,空对象不能使用,即不能让一个空对象去调用方法产生行为。例:3.1,3.2,3.3,3.4:对象的声明、引用,7.参数传值,当方法被调用时,如果方法有参数,参数必须要实例化,即参数变量必须有具体的值。在Java中,方法的所有参数都是“传值”的,也就是说,方法中参数变量的值是调用者指定的值的拷贝(基本类型的参数接收的实参变量的value,对象参数接收的实参对象的引用)。例如,如果向方法的int型参数x传递一个int值,那么参数x得到的值是传递值的拷贝。方法如果改变参数的值,不会影响向参数“传值”的变量的值。,8.基本数据类型参数的传值,对于基本数据类型的参数,向该参数传递的值的级别不可以高于该参数的级别比如,不可以向int型参数传递一个float值,但可以向double型参数传递一个float值。,9.引用类型参数的传值,Java的引用型数据包括对象、数组和接口。当参数是引用类型时,“传值”传递的是变量的引用而不是变量所引用的实体。如果改变参数变量所引用的实体,就会导致原变量的实体发生同样的变化。但是,改变参数的引用不会影响向其传值的变量的引用。,参数传递举例例3.5,3.6:简单类型参数传递和对象参数传递,3.5null关键字,null用来标识一个不确定的对象。可以将null赋给引用类型变量,但不可以将null赋给基本类型变量。如intx=null;/非法Stringstr=null,intarr=null;Peoplep=null;/合法null本身不是对象,也不是Objcet的实例测试“nullinstanceofjava.lang.Object”的值为falasenull的其他作用判断一个引用类型数据是否null。用=来判断。释放内存,让一个非null的引用类型变量指向null。这样这个对象就不再被任何对象应用了。等待JVM垃圾回收机制去回收。,3.6static关键字,用static修饰的成员变量称为类变量staticintx=5;用static修饰的方法称为类方法publicstaticStringcurrentDate(),1.实例变量和类变量的区别,一个类通过使用new运算符可以创建多个不同的对象,不同的对象的实例变量将被分配不同的内存空间,如果类中的成员变量有类变量,那么所有的对象的这个类变量都分配给相同的一处内存,改变其中一个对象的这个类变量会影响其它对象的这个类变量。类变量是和该类创建的所有对象相关联的变量,改变其中一个对象的这个类变量就同时改变了其它对象的这个类变量。因此,类变量不仅可以通过某个对象访问也可以直接通过类名访问。实例变量仅仅是和相应的对象关联的变量,也就是说,不同对象的实例变量互不相同,即分配不同的内存空间,改变其中一个对象的实例变量不会影响其它对象的这个实例变量。实例变量可以通过对象访问,不能使用类名访问。,2.实例方法和类方法的区别,实例方法可以被类创建的任何对象调用执行。类方法不仅可以被类创建的任何对象调用执行,也可以直接通过类名调用例3.7:static关键字,3.7this关键字,this是Java的一个关键字,表示某个对象。this可以出现在实例方法和构造方法中,但不可以出现在类方法中。this关键字出现在类的构造方法中时,代表使用该构造方法所创建的对象。this关键字出现在类的实例方法中时,代表正在调用该方法的当前对象。例3.8:this关键字,3.8包(Package),包是Java语言中有效地管理类的一个机制。Java通过关键字package声明包语句。package语句作为Java源文件的第一条语句,指明该源文件定义的类所在的包。package语句的一般格式为:package包名;包名可以是一个合法的标识符,也可以是若干个标识符加“.”分割而成。如packagecn.zzuli.cs,1.包语句,如果源程序中省略了package语句,源文件中你定义命名的类被隐含地认为是无名包的一部分,即源文件中定义命名的类在同一个包中,但该包没有名字。例3.9:package关键字,2.import语句,使用import语句可以引入包中的类。在编写源文件时,除了自己编写类外,我们经常需要使用Java提供的许多类,这些类可能在不同的包中。在学习Java语言时,使用已经存在的类,避免一切从头做起,这是面向对象编程的一个重要方面。例3.10,3.11,3.12,3.将自定义的类打成jar包,程序代码见例2.13打包命令编译:javac-d.*.java打包:jarcvfmyzzuli.jarcn/Eclpse中打包右击包名ExportJava/JarfileNext输入“jar包名.jar”Finish,3.访问权限,类创建了一个对象之后,该对象可以通过“.”运算符操作自己的变量、使用类中的方法,但对象操作自己的变量和使用类中的方法是有一定限制的。所谓访问权限是指对象是否可以通过“.”运算符操作自己的变量或通过“.”运算符使用类中的方法。访问限制修饰符有private、protected和public,都是Java的关键字,用来修饰成员变量或方法。,4.私有变量和私有方法,一个类(A)在另外一个类(B)中创建一个对象后,该对象(b)不能访问自己的私有变量和私有方法对于一个类的私有类变量(静态成员变量),那么在另外一个类中,也不能通过类名来操作这个私有类变量。例3.14:私有变量和私有方法举例,classAprivateinta1;inta2;protectedinta3;publicinta4;privatevoidfa1()voidfa2(),classBvoidfbx()Aa=newA();a.a1=12;/非法a.a2=13;a.a3=14;a.fa1();/非法a.fa2();,5.公有变量和公有方法,一个类在另外一个类中创建一个对象后,该对象能访问自己的public变量和public方法对于一个类的public类变量(静态成员变量),那么在另外一个类中,也能通过类名来操作这个public类变量。,6.友好变量和友好方法,不用private、public、protected修饰符的成员变量和方法被称为友好变量和友好方法。一个类在另外一个类中创建一个对象后,如果两个类在同一包中,该对象能访问自己的友好变量和友好方法对于一个类的友好类变量(静态成员变量),如果两个类在同一包中,那么在另外一个类中,也能通过类名来操作这个友好类变量。,7.受保护的成员变量和方法,一个类在另外一个类中创建一个对象后,如果两个类在同一包中,该对象能访问自己的protected变量和protected方法对于一个类的protected类变量(静态成员变量),如果两个类在同一包中,那么在另外一个类中,也能通过类名来操作这个protected类变量。在后面学习类的继承时,将讲述protected和“友好”之间在继承方面的区别。,8.public类和友好类,类声明时,如果关键词class前面加上public关键字,就称这样的类是一个public类。可以在任何另外一个类中使用public类创建的对象。类声明时,如果关键词class前面,没有任何关键词修饰,就称这样的类是一个友好类。那么,另外一个类中使用友好类创建的对象时,要保证它们是在同一个包中。注1:不能用protected和private修饰类(内部类除外)。注2:访问权限的级别从高到低依次为:public、protected、友好的、private。,3.9类的继承,继承是一种由已有的类创建新类的机制。利用继承,可以先创建一个公有属性的一般类,根据该一般类再创建具有特殊属性的新类,新类继承一般类的状态和行为,并根据需要增加它自己的新的状态和行为。由继承而得到的类称为子类,被继承的类称为父类(超类)。Java不支持多重继承(子类只能有一个父类)。,1.子类,在类的声明中,通过使用关键字extends来创建一个类的子类,格式如下:class子类名extends父类名例如:classStudentsextendsPeople,2.子类的继承性,类有可以有两种重要的成员:成员变量和方法。子类的成员中有一部分是子类自己声明定义的,另一部分是从它的父类继承的。所谓子类继承父类的成员变量作为自己的一个成员变量,就好象它们是在子类中直接声明一样,可以被子类中自己声明的任何实例方法操作.所谓子类继承父类的方法作为子类中的一个方法,就象它们是在子类中直接声明一样,可以被子类中自己声明的任何实例方法调用。,3.子类和父类在同一包中的继承性,如果子类和父类在同一个包中,那么,子类自然地继承了其父类中不是private的成员变量作为自己的成员变量,并且也自然地继承了父类中不是private的方法作为自己的方法,继承的成员或方法的访问权限保持不变。例3.15,4.子类和父类不在同一包中的继承性,如果子类和父类不在同一个包中,那么,子类继承了父类的protected、public成员变量做为子类的成员变量,并且继承了父类的protected、public方法为子类的方法,继承的成员或方法的访问权限保持不变。如果子类和父类不在同一个包里,子类不能继承父类的友好变量和友好方法。,5.成员变量的隐藏和方法的重写,子类也可以隐藏继承的成员变量,对于子类可以从父类继承的成员变量,只要子类中定义的成员变量和父类中的成员变量同名时,子类就隐藏了继承的成员变量;子类通过方法的重写可以隐藏继承的方法,方法重写是指:子类中定义一个方法,并且这个方法的名字、返回类型、参数个数和类型与从父类继承的方法完全相同;对于子类创建的一个对象,如果子类重写了父类的方法,则运行时系统调用子类重写的方法,如果子类继承了父类的方法(未重写),那么子类创建的对象也可以调用这个方法,只不过方法产生的行为和父类的相同而已。例3.16,3.17,6.final关键字,final关键子可以修饰类、成员变量和方法中的参数。final类不能被继承,即不能有子类。如果一个方法被修饰为final方法,则这个方法不能被重写如果一个成员变量被修饰为final的,就是常量,常量必须赋给初值,而且不能再发生变化。如果方法的参数被修饰为final的,该参数的值不能被改变例3.18,7.对象的上转型对象,假设B类是A类子类或间接子类,当我们用子类B创建一个对象,并把这个对象的引用放到A类的对象中时:Aa;Bb=newB();a=b;称这个A类对象:a,是子类对象b的上转型对象.对象的上转型对象的实体是子类负责创建的,但上转型对象会失去原子类对象的一些属性和功能。,上转对象不能操作子类新增的成员变量(失掉了这部分属性);不能使用子类新增的方法(失掉了一些功能)。上转型对象可以操作子类继承或隐藏成员变量,也可以使用子类继承的或重写的方法。上转型对象操作子类继承或重写的方法时,就是通知对应的子类对象去调用这些方法。因此,如果子类重写了父类的某个方法后,对象的上转型对象调用这个方法时,一定是调用了这个重写的方法。可以将对象的上转型对象再强制转换到一个子类对象,这时,该子类对象又具备了子类所有属性和功能。例3.19,对象的上转型对象,3.11多态性,多态性就是指父类的某个方法被其子类重写时,可以各自产生自己的功能行为.当一个类有很多子类时,并且这些子类都重写了父类中的某个方法。那么当我们把子类创建的对象的引用放到一个父类的对象中时,就得到了该对象的一个上转型对象,那么这个上转的对象在调用这个方法时就可能具有多种形态.例3.20:用多态性实现不同动物的叫声。,1.abstract类和abstract方法,用关键字abstract修饰的类称为abstract类(抽象类)abstractclassA,2.abstract类的特点,和普通的类相比,abstract类可以有abstract方法。对于abstract方法,只允许声明,不允许实现,而且不允许使用final修饰abstract方法。abstractclassAabstractintmin(intx,inty);/抽象方法intmax(intx,inty)/普通方法returnxy?x:y;,对于abstract类,我们不能使用new运算符创建该类的对象,需产生其子类,由子类创建对象;如果一个类是abstract类的子类,它必须具体实现父类的abstract方法,这就是为什么不允许使用final修饰abstract方法的原因。一个abstract类只关心它的子类是否具有某种功能,并不关心功能的具体行为,功能的具体行为由子类负责实现,抽象类中的抽象方法可以强制子类必须给出这些方法的具体实现。例2.21,2.22,3.abstract类不能用new运算创建对象,3.12super关键字,子类不继承父类的构造方法,因此,子类如果想使用父类的构造方法,必须在子类的构造方法中使用,并且必须使用关键字super来表示,而且super必须是子类构造方法中的头一条语句。如果我们在子类中想使用被子类隐藏了的父类的成员变量或方法就可以使用关键字super。比如:super.x、super.play(),就是被子类隐藏的父类的成员变量x和方法play()。例2.23,2.24,3.13接口(interface),Java不支持多继承性,即一个类只能有一个父类。单继承性使得Java简单,易于管理程序。为了克服单继承的缺点,Java使用了接口,一个类可以实现多个接口。,1.接口的声明与使用,使用关键字interface来定义一个接口。接口的定义和类的定义很相似,分为接口的声明和接口体。接口体中包含常量定义和方法定义两部分。接口体中只进行方法的声明,不许提供方法的实现,所以,方法的定义没有方法体,且用分号“;”结尾。如:interfacePrintablefinalintMAX=100;voidadd();floatsum(floatx,floaty);,2.接口的使用,一个类通过使用关键字implements声明自己使用一个或多个接口。如果使用多个接口,用逗号隔开接口名。如:classAimplementsPrintable,Addable如果一个类使用了某个接口,那么这个类必须实现该接口的所有方法,即为这些方法提供方法体.特别注意:接口中的方法默认的是publicabstract方法,所以其实现类给出的方法体一定要用public来修饰,而且接口中的常量默认是publicstatic常量,3.理解接口,接口的思想在于它可以增加很多类都需要实现的功能,使用相同的接口类不一定有继承关系.同一个类也可以实现多个接口。接口只关心功能,并不关心功能的具体实现。例3.25,3.26,4.接口回调,接口回调是指:可以把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量中。那么该接口变量就可以调用被类实现的接口中的方法。实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法。例3.27,3.28,5.接口做参数,一个方法的参数是接口类型,就可以将任何实现该接口的类的实例的引用传递给该接口参数,接口参数就可以回调类实现的接口方法。例3.29,3.14内部类,Java支持在一个类中声明另一个类,这样的类称作内部类,而包含内部类的类成为内部类的外嵌类。内部类的类体中不可以声明类变量和类方法。外嵌类的类体中可以用内部类声明对象,作为外嵌类的成员。例3.30,3.15匿名类,和类有关的匿名类当使用类创建对象时,程序允许我们把类体与对象的创建组合在一起,也就是说,类创建对象时,除了构造方法还有类体,此类体被认为是该类的一个子类去掉类声明后的类体,称作匿名类。和接口有关的匿名类Java允许直接用接口名和一个类体创建一个匿名对象,此类体被认为是实现了接口的类去掉类声明后的类体,称作匿名类。例3.31,3.16异常类,程序运行出现异常时,Java运行环境就用异常类Exception的相应子类创建一个异常对象,并等待处理,例如,读取一个不存在的文件时,运行环境就用异常类IOException创建一个对象,异常对象可以调用如下方法得到或输出有关异常的信息:publicStringgetMessage()publicvoidprintStackTrace()publicStringtoString(),使用trycatchfinally语句来处理异常,将可能出现的异常操作放在trycatch语句的try部分,当try部分中的某个语句发生异常后,try部分将立刻结束执行,而转向执行相应的catch部分;所以程序可以将发生异常后的处理放在catch部分。finally部分放的是无论是否出现异常都要执行的语句。trycatch语句可以由几个catch组成,分别处理发生的相应异常。,1.异常处理,trycatch语句的格式如下:try包含可能发生异常的语句;catch(ExceptionSubClass1e)异常处理语句1;catch(ExceptionSubClass2e)异常处理语句2;finally无论异常发生与否都要执行的语句;例3.33,2.trycatchfinally语句格式,用户自定义的所有异常类都必须是Exception的子类publicclassMyExceptionextendsException.一个方法在声明是可以使用throws关键字声明要产生的异常,并在该方法体中给出产生异常的操作在程序中发现异常情况时,可以抛出(throw)一个异常实例,将其放到异常队列中去,并激活Java的异常处理机制,如:thrownewMyException()例3.34,3.自定义异常类,3.18Class类,Class是java.lang包中的类,该类的实例用来封装对象运行时的状态。当一个类被加载且创建对象时,和该类相关的一个类型为Calss的对象就会自动创建。Class类本身不提供构造方法,因此,不能使用new运算符和构造方法显示地创建一个Class对象。,1、Class类的使用,任何对象调用getClass()方法都可以获取和该对象相关的一个Class对象,这个Class对象调用如下的方法可以获取创建对象的类的有关信息.StringgetName()/获取类名,FieldgetDeclaredFields()/获取成员变量,MethodgetDeclaredMethods()/获取成员方法,ConstructorgetDeclaredConstructors()/获取构造函数例3.35,2.使用Class实例化一个对象,创建对象最常用的方式就是使用new运算符和类的构造方法,实际上也可以使用Class对象得到一个类的实例。为了得到一个类的对象,可以先得到一个和该类相关的Class对象,只要使用Class的类方法publicstatic

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论