面向对象编程基础_第1页
面向对象编程基础_第2页
面向对象编程基础_第3页
面向对象编程基础_第4页
面向对象编程基础_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

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

文档简介

面向对象编程基础第1页,共75页,2023年,2月20日,星期四对象的特征——属性属性——对象具有的各种特征,用变量来存储每个对象的每个属性都拥有特定值例如:王小红和朱小雨的体重不一样

体重:60kg姓名:王小红属性

年龄:35岁收银员小王第2页,共75页,2023年,2月20日,星期四对象的特征——方法方法——对象执行的操作,描述对象的行为

打单

收银方法刷卡收银员王小红第3页,共75页,2023年,2月20日,星期四类:从对象抽取出类顾客类轿车类

…………

类概括了同类对象共有的性质:属性和方法类是对象的类型不同于int类型:具有方法

各种口味的球状冰淇淋

球状冰淇淋模子第4页,共75页,2023年,2月20日,星期四类和对象有什么区别呢?类是模板,比如说:“人”对象是类的一个实例,比如:“小布什”小布什普京克林顿……“人”类特征(属性)姓名性别年龄体重行为(方法)衣食住行第5页,共75页,2023年,2月20日,星期四Java类模板class类名{//成员变量部分变量声明1;

变量声明2;

…变量声明n;//定义方法部分方法1;

方法2;

方法m;}第6页,共75页,2023年,2月20日,星期四Java类的例子publicclassCircle{ privatedoubleradius;//成员变量radius代表圆的半径

//构造方法,用来初始化新对象 publicCircle(doubleradius){ this.radius=radius; }//取得圆的半径 publicdoublegetRadius(){ returnradius; }//设置圆的半径 publicvoidsetRadius(doubleradius){ this.radius=radius; }//计算圆的面积 publicdoublegetArea(){ returnMath.PI*radius*radius; }}第7页,共75页,2023年,2月20日,星期四成员变量publicclassCircle{

privatedoubleradius;

//构造方法,用来初始化新对象 publicCircle(doubleradius){

this.radius=radius; }//取得圆的半径 publicdoublegetRadius(){ returnradius; }//设置圆的半径 publicvoidsetRadius(doubleradius){

this.radius=radius; }//计算圆的面积 doublegetArea(){ returnMath.PI*radius*radius; }}[修饰符]类型变量名[=初值];成员变量在所在类的所有方法中都是有效的成员变量可以和局部变量重名,这时访问成员变量要使用this.成员变量名P42第8页,共75页,2023年,2月20日,星期四方法doublegetArea(){ returnMath.PI*radius*radius;}返回类型方法名称(类型参数名,类型参数名…)非void方法中,return语句是必需的!void方法可以没有return语句,也可以有不带任何值的return语句,仅用于终止方法,返回调用处P42第9页,共75页,2023年,2月20日,星期四方法重载publicclassTestMethodOverloading{publicstaticvoidmain(String[]args){System.out.println(max(3,4));System.out.println(max(3.0,5.4));System.out.println(max(3.0,5.4,10.14));}publicstaticintmax(intnum1,intnum2){if(num1>num2)returnnum1;elsereturnnum2;}publicstaticdoublemax(doublenum1,doublenum2){if(num1>num2)returnnum1;elsereturnnum2;}publicstaticdoublemax(doublenum1,doublenum2,doublenum3){returnmax(max(num1,num2),num3);}}同一个类中的两个或多个方法具有相同的名称,但有不同的参数列表。Java使用参数的类型、数量和顺序决定实际调用重载方法的哪个版本第10页,共75页,2023年,2月20日,星期四11什么是构造方法构造方法负责对象成员的初始化工作,为成员变量赋予合适的初始值构造方法必须满足以下语法规则:1、方法名与类名相同2、没有返回类型,没有voidpublicclassCircle{ privatedoubleradius;

publicCircle(doubleradius){ this.radius=radius; }

…}publicclassTest{publicstaticvoidmain(String[]args){

Circlec1=newCircle(2);//创建Circle对象,半径是2Circlec2=newCircle(5);//创建Circle对象,半径是5}}使用new关键字调用构造方法,创建对象P43第11页,共75页,2023年,2月20日,星期四什么是构造方法

classWelcome{publicstaticvoidmain(String[]args){

System.out.println(“welcometoJava!”);}}这个类有构造方法吗?如何创建一个Welcome对象?类可以不声明构造方法,在这种情况下,类中隐含地声明了一个方法体为空的无参构造方法,这个构造方法称为默认构造方法。只有当类中没有明确声明构造方法时,默认构造方法才会自动生成。创建Welcome对象:Welcomew=newWelcome();//调用无参构造方法创建对象第12页,共75页,2023年,2月20日,星期四如何创建对象1、声明变量:类名对象名;2、使用new创建对象:new构造方法(实参)3、两个步骤同时:类名对象名=new构造方法(实参);c1=newCircle(5);c2=newCircle(6);Circlec1;Circlec2;Circle

c1=newCircle(5);Circle

c2=newCircle(6);P44第13页,共75页,2023年,2月20日,星期四Java语言将数据类型分成两类:基础数据类型:byte,short,int,long,float,double,boolean,char引用类型:类、数组、接口基础数据类型变量存放的是数据值inti=10;intj=12;引用变量包含对象或者数组的引用地址Circlec;c=newCircle(5.0);对象的内存模型10i:j:12c:0x34AC0c:radius:Circle对象,内存地址0x34AC05.0第14页,共75页,2023年,2月20日,星期四对象的内存模型Circlec1=newCircle(5);Circlec2=newCircle(6);c1=c2;c1:0x34AB6c2:radius:Circle对象,内存地址0x34AC05.0radius:Circle对象,内存地址0x34AB66.0如果一个对象没有任何引用指向它,该对象就成为无用对象(半径为5的圆),可以被垃圾回收,Java虚拟机会自动回收无用对象,释放空间0x34AC00x34AB6无用对象,垃圾第15页,共75页,2023年,2月20日,星期四使用对象使用对象的一般形式:对象名.成员变量对象名.方法名(实参)publicclassTest{publicstaticvoidmain(String[]args){ Circlec1=newCircle(2);//创建Circle对象,半径是2Circlec2=newCircle(5);//创建Circle对象,半径是5doublearea=c1.getArea();System.out.println(“c1的面积是:”+area);System.out.println(“c2的半径是:”+c2.getRadius());}}P45第16页,共75页,2023年,2月20日,星期四类的包含关系classB{intb1;intb2;B(intx,inty){b1=x;b2=y;}voidwrite(){System.out.print(“B类的输出!”);}}classA{Bb;inta;A(intx,inty,intz){b=newB(x,y);a=z;b.write();}}classExample{publicstaticvoidmain(String[]args){Aobj=newA(1,2,3);}}P57第17页,共75页,2023年,2月20日,星期四this关键字this指的是当前对象,this的用途有下面三种:在实例方法或构造方法内部引用成员变量在实例方法或构造方法内部调用方法在构造方法内部调用本类的其它构造方法P57第18页,共75页,2023年,2月20日,星期四使用this引用成员变量publicclassCircle{ privatedoubleradius; publicCircle(doubleradius){

this.radius=radius; } publicdoublegetRadius(){ returnradius; } publicvoidsetRadius(doubleradius){ this.radius=radius; } doublegetArea(){ returnMath.PI*radius*radius; }}因为参数和成员变量重名,这里使用this.radius表示成员变量radius实例成员变量前面隐含this一般省略,这里相当于:Math.PI*this.radius*this.radiusP56第19页,共75页,2023年,2月20日,星期四使用this调用本类的方法publicclassCircle{ privatedoubleradius; publicCircle(doubleradius){

this.setRadius(); } publicdoublegetRadius(){ returnradius; } publicvoidsetRadius(doubleradius){ this.radius=radius; } doublegetArea(){ returnMath.PI*radius*radius; }}实例方法前面隐含this,一般省略P56第20页,共75页,2023年,2月20日,星期四this调用构造方法publicclassCircle{ privatedoubleradius;

publicCircle(){

this(1.0);} publicCircle(doubleradius){ this.radius=radius; } publicdoublegetArea(){ returnMath.PI*radius*radius; }}调用本类的其他构造方法不能使用构造方法名称,例如Circle(1.0)只能使用this(实参)this必须是构造方法第一句P57第21页,共75页,2023年,2月20日,星期四publicclassRectangle{intx,y,width,height;

publicRectangle(intw,inth){

this(1,1,w,h);//必须写在第一句//Rectangle(1,1,w,h);it’swrong}publicRectangle(intx,inty,intw,inth){this.x=x;this.y=y;this.width=width;this.height=height;}}Rectangler=newRectangle(2,4);第22页,共75页,2023年,2月20日,星期四实例变量和类变量(静态变量)publicclassCircle{staticdoublePI=3.14;

doubleradius;

publicCircle(doubleradius){ this.radius=radius; } doublegetArea(){ returnMath.PI*radius*radius; }}使用static修饰的是类变量没有static修饰的是实例变量P46第23页,共75页,2023年,2月20日,星期四Circlec1=newCircle(5);Circlec2=newCircle(2.5);c1c2实例变量(非static)属于对象,其值存储于对象的空间,必须通过对象名来访问。doubler1=c1.radius;doubler2=c2.radius;radius:5.0radius:2.5P46第24页,共75页,2023年,2月20日,星期四Circlec1=newCircle(5);Circlec2=newCircle(2.5);c1c2static变量存储于类的公共内存,被此类的所有对象共享,既可以用对象名访问,也可以直接用类名访问doublep1=c1.PI;doublep2=c2.PI;doublep3=Circle.PI;radius:5.0radius:2.5PI:3.14P46第25页,共75页,2023年,2月20日,星期四publicclassTestClass{staticintts;inti;publicstaticvoidmain(String[]args){TestClassa=newTestClass();TestClassb=newTestClass();a.i=3;b.i=5;a.ts=12;b.ts+=5;TestClass.ts+=7;System.out.print(b.i);System.out.print(TestClass.ts);}}第26页,共75页,2023年,2月20日,星期四publicclassCircle{doubleradius;staticintnumberOfObjects=0;Circle(){radius=1.0;numberOfObjects++;}Circle(doublenewRadius){radius=newRadius;numberOfObjects++;}doublegetArea(){returnradius*radius*Math.PI;}}第27页,共75页,2023年,2月20日,星期四实例方法和类方法publicclassCircle{staticdoublePI=3.14;

doubleradius;

publicCircle(doubleradius){ this.radius=radius; } doublegetArea(){ returnMath.PI*radius*radius; }staticvoidmeth(){}publicstaticvoidmain(String[]args){}}使用static修饰的是类方法没有static修饰的是实例方法P46第28页,共75页,2023年,2月20日,星期四实例方法和类方法实例方法可以接收this(当前对象),并可以在其内部使用this引用实例成员,实例方法只能通过对象名来调用。

publicclassCircle{staticdoublePI=3.14;

doubleradius;

publicCircle(doubleradius){ this.radius=radius; } doublegetArea(){ returnPI*radius*radius;//radius前隐含this }}Circlec1=newCircle(5);c1.getArea();//此次调用的this指的是c1,计算3.14*5*5P46第29页,共75页,2023年,2月20日,星期四实例方法和类方法static方法不能接收this(当前对象),方法内部不能使用this,静态方法可以用对象名来调用,但通常用类名调用,例如Math.random()。publicclassCircle{staticdoublePI=3.14; doubleradius;

publicCircle(doubleradius){ this.radius=radius; } doublegetArea(){ returnPI*radius*radius; }staticvoidmeth(){

doublearea=PI*radius*radius;}}这句语句有什么错?不能在static方法内部直接访问实例成员变量!!!!不能在static方法内部直接访问实例方法!!!P46第30页,共75页,2023年,2月20日,星期四包的声明和使用Java的每个类都属于一个包,要把一个类放入包中,只需在java文件的最前端加上package语句,格式为:pacakge包名;packagegraphics;publicclassCircle{ doubleradius;

publicCircle(doubleradius){ this.radius=radius; } doublegetArea(){ returnPI*radius*radius; }}packagegraphics;publicclassColumne{

…}classTriangle{

…}classRectangle{

…}多个java文件开头有相同的包声明,这些文件中所有的类都属于这个包P31第31页,共75页,2023年,2月20日,星期四包的声明和使用如果一个文件的首行没有包声明,那么这个文件里的所有类都属于默认包(无名包)。包是有层次关系的,因此包的命名也要有层次,例如:

java.langjavax.swingjava.awt.eventP31第32页,共75页,2023年,2月20日,星期四访问外包中的类.njcit;importjava.util.Date;Importjava.text.SimpleDateFormat;

publicclassMyClass{publicstaticvoidmain(String[]args){Dated=newDate();//获取当前系统的时间

SimpleDateFormats=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss"); StringdateStr=s.format(d);}}.njcit;publicclassMyClass{publicstaticvoidmain(String[]args){

java.util.Date

d=newjava.util.Date();//获取当前系统的时间

java.text.SimpleDateFormats=newjava.text.SimpleDateFormat("yyyy-MM-ddHH:mm:ss"); StringdateStr=s.format(d);}}使用包名.类名访问使用import包名.类名第33页,共75页,2023年,2月20日,星期四访问外包中的类.njcit;importjava.util.*;Importjava.text.*;

publicclassMyClass{publicstaticvoidmain(String[]args){Dated=newDate();//获取当前系统的时间

SimpleDateFormats=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss"); StringdateStr=s.format(d);}}使用import包名.*导入该包的所有公共类第34页,共75页,2023年,2月20日,星期四访问权限Java类有两种访问级别:public,如果没有修饰符即为package级别(友好级别)public类可以在任何类中被访问非public类只能在同一个包中被访问packagea;publicclassMyClass{publicstaticvoidmain(String[]args){}}packageb;classYourClass{publicstaticvoidmain(String[]args){}}P48第35页,共75页,2023年,2月20日,星期四类成员的访问级别public

成员变量和方法可以在任何类中被访问private

成员变量和方法只能在自身所在的类中被访问package

成员变量和方法可以在自身所在包的类中被访问protected

同package+子类可访问第36页,共75页,2023年,2月20日,星期四37继承动物食草动物食肉动物继承需要符合的关系:is-a,父类更通用、子类更具体第37页,共75页,2023年,2月20日,星期四38如何实现继承publicclassPerson{privateStringid;//id号privateStringname; //姓名publicPerson(Stringid,Stringname){this.id=id;=name;}publicvoidsetID(Stringid){ this.id=id;}publicStringgetID(){ returnid;}//setName、getName方法publicvoiddisplay(){System.out.println("id:"+id);System.out.println("姓名:"+name);}}publicclassStudent{privateStringid;//id号privateStringname; //姓名

privateStringmajor; //专业publicStudent(Stringid,Stringname,Stringmajor){this.id=id;=name;this.major=major;}//setID、getID方法//setName、getName方法publicvoiddisplay(){System.out.println("id:"+id);System.out.println("姓名:"+name);System.out.println("专业:"+major);}}第38页,共75页,2023年,2月20日,星期四publicclassPerson{privateStringid;//id号privateStringname; //姓名publicPerson(Stringid,Stringname){this.id=id;=name;}publicvoidsetID(Stringid){ this.id=id;}publicStringgetID(){ returnid;}//setName、getName方法publicvoiddisplay(){System.out.println("id:"+id);System.out.println("姓名:"+name);}}publicclassStudentextendsPerson{privateStringmajor; //专业publicStudent(Stringid,Stringname,Stringmajor){super(id,name);this.major=major; }publicvoidsetMajor(Stringmajor){this.major=major;}publicStringgetMajor(){returnmajor;}publicvoiddisplay(){super.display();System.out.println("专业:"+getMajor());}publicvoidstudy(){System.out.println("学生要上学!");}}第39页,共75页,2023年,2月20日,星期四如何实现继承class类名extends父类名{}父类也可称为超类(superclass),or基类(baseclass)派生出来的类也可称为子类(childclass)或者派生类(derivedclass)P49第40页,共75页,2023年,2月20日,星期四Java中每个类有且只有一个父类(Object类除外)如果一个类没有明确的声明父类,那么这个类默认继承Object类

publicclassMyClass{//…}publicclassMyClass

extendsObject{

//…}第41页,共75页,2023年,2月20日,星期四使用super调用父类构造方法publicclassPerson{privateStringid;//id号privateStringname; //姓名publicPerson(Stringid,Stringname){this.id=id;=name;}publicvoiddisplay(){System.out.println("id:"+id);System.out.println("姓名:"+name);}}publicclassStudentextendsPerson{privateStringmajor; //专业publicStudent(Stringid,Stringname,Stringmajor){

super(id,name);//必须是第一句this.major=major; }publicvoiddisplay(){super.display();System.out.println("专业:"+getMajor());}publicvoidstudy(){System.out.println("学生要上学!");}}Students=newStudent(“1”,“张三",“computer");只能在子类构造方法内部使用super关键字方法父类构造方法,不能使用父类的构造方法名称调用。super语句必须是子类构造方法的第一句P52第42页,共75页,2023年,2月20日,星期四使用super调用父类构造方法如果在构造方法中没有使用super调用父类构造方法,编译器会默认把super()当成构造方法的第一句publicclassMyClass{publicMyClass(){}}publicclassMyClassextendsObject{publicMyClass(){

super();}}第43页,共75页,2023年,2月20日,星期四使用super调用父类方法publicclassPerson{publicvoiddisplay(){ System.out.println("id:"+this.getID()); System.out.println("姓名:“+this.getName()); }}publicclassStudentextendsPerson{publicvoiddisplay(){

super.display();

//调用父类的display方法 System.out.println(“专业:"+this.getMajor());}}P55第44页,共75页,2023年,2月20日,星期四使用super使用调用父类成员变量

publicclassSuperclass{publicbooleanaVariable;publicvoidaMethod(){aVariable=true;}}publicclassSubclassextendsSuperclass{publicbooleanaVariable;publicvoidaMethod(){aVariable=false;super.aMethod();System.out.println(aVariable);System.out.println(super.aVariable);}publicstaticvoidmain(String[]args){ Subclasssu=newSubclass(); su.aMethod();}}P55第45页,共75页,2023年,2月20日,星期四方法覆盖OverridingMethods有时,子类需要修改父类中定义的方法,这叫做方法的覆盖(override)publicclassPerson{

publicvoiddisplay(){ System.out.println("\tid:"+this.getID()); System.out.println("\t姓名:"+this.getName()); }}publicclassStudentextendsPerson{

publicvoiddisplay(){ super.display();

System.out.println("\t专业:"+this.getMajor()); }}子类中的实例方法(非static)和父类中的实例方法具有相同的名称、参数列表和返回类型,就称子类的方法覆盖父类的方法。第46页,共75页,2023年,2月20日,星期四对象转换Personp1=newStudent(“1”,“张三”,“计算机");父类变量子类对象这样写是正确的,因为学生对象一定是个人Personp=newCat();//错误第47页,共75页,2023年,2月20日,星期四对象转换Students=newPerson(“3201111111”,”李四”);//

编译错误这样写是错误的,因为学生一定是人,但人不一定是学生第48页,共75页,2023年,2月20日,星期四DynamicBinding(动态连编)Personp1=newStudent(“1”,“张三”,“计算机");p1.display();Person和Student类中都有display方法,但是因为p指向的是Student对象,所以这里调用的是student类的display方法在程序的运行时才进行绑定,dynamicbinding,这种绑定以对象的类型来决定调用哪一个方法第49页,共75页,2023年,2月20日,星期四Personp1=newStudent(“1”,“张三”,“计算机");p1.study();通过变量可以调用哪些方法,是在编译期由变量的类型决定的,属于前期earlybinding,因为p是Person类型,Person类中没有study方法,所以不能调用。第50页,共75页,2023年,2月20日,星期四多态性publicclassPoly{publicvoidshow(Students){s.display();}publicvoidshow(Teachert){t.display();}}publicclassPoly{publicvoidshow(Personp){p.display();}}第51页,共75页,2023年,2月20日,星期四finalfinalclass不能被继承finalclassMath{...}final变量就是常量:finaldoublePI=3.14159;final方法不能被覆盖P54第52页,共75页,2023年,2月20日,星期四抽象方法和抽象类抽象方法:有方法声明没有方法实现如果一个类中包含抽象方法,这个类就要声明成抽象类,反之不成立abstractclassFigure{doubledim1,dim2;Figure(doublea,doubleb){ dim1=a; dim2=b;}

abstractdoublegetArea();//只有方法头,没有方法体}Figuref=newFigure(2,3);//抽象类不能实例化P54第53页,共75页,2023年,2月20日,星期四抽象类和抽象方法抽象类可以被继承,由子类实现其抽象方法,否则其子类必须声明成抽象类abstractclassFigure{doubledim1,dim2;Figure(doublea,doubleb){ dim1=a; dim2=b;}

abstractdoublegetArea();//只有方法头,没有方法体}abstractclassRectangleextendsFigure{Rectangle(doublea,doubleb){super(a,b);}}Rectangle类继承了Figure类,但是没有实现其内部的抽象方法,必须声明成抽象类第54页,共75页,2023年,2月20日,星期四抽象类和抽象方法abstractclassFigure{doubledim1,dim2;Figure(doublea,doubleb){ dim1=a; dim2=b;}

abstractdoublegetArea();//只有方法头,没有方法体}classTriangleextendsFigure{Triangle(doublea,doubleb){ super(a,b);}doublegetArea(){returndim1*dim2/2;}}Triangle类继承了Figure类,并且实现了其内部的抽象方法,无需声明成抽象类第55页,共75页,2023年,2月20日,星期四接口接口是一种类似于类的结构,但是接口中只能包含常量和抽象方法。

为了和类区别,定义接口使用下面的语法:[public]interface接口名[extends父接口列表]{

常量声明

抽象方法}第56页,共75页,2023年,2月20日,星期四publicinterfaceEdible{

//接口中的方法隐含public和abstractpublicStringhowToEat();}publicinterfaceRunnable{publicvoidrun();}publicinterfaceSleepable{intMAX=100;//接口中的变量隐含public,static,finalpublicvoidsleep();}第57页,共75页,2023年,2月20日,星期四接口接口不能实例化可以声明接口类型的变量,用接口声明出的变量是引用类型变量newRunnable();//错误Ediblee;RunnablerSleepables;第58页,共75页,2023年,2月20日,星期四实现接口classAnimal{}classChickenextendsAnimalimplementsEdible,Runnable{ publicStringhowToEat(){ return"炸着吃"; } publicvoidrun(){System.out.println("两条腿跑"); }publicvoidlayAnEgg(){ System.out.println("母鸡还可以生蛋"); }}一个类可以实现多个接口,多个接口间用逗号分隔实现接口的方法,返回类型,名字,参数列表和接口中定义的一模一样,并且必须是public的第59页,共75页,2023年,2月20日,星期四classPigextendsAnimalimplementsEdible,Runnable,Sleepable

{ publicStringhowToEat(){ return"蒸着吃,烤着吃,红烧,炖汤等等"; } publicvoidrun(){ System.out.println("四条腿跑"); }publicvoidsleep(){}}第60页,共75页,2023年,2月20日,星期四abstractclassCarimplementsEdible,Runnable{ publicvoidrun(){ System.out.println("四个轮子跑"); }}一个类如果声明要实现一个接口,就必须实现接口中的所有方法,否则就要声明成抽象类第61页,共75页,2023年,2月20日,星期四接口定义了行为的协议,可以被任何类实现。一个类如果声明要实现一个接口,就必须实现接口中的所有方法,否则就要声明成抽象类一个类可以实现多个接口,但是只能有一个父类。第62页,共75页,2023年,2月20日,星期四接口的实现实现了接口的类的对象,可以赋值给该接口的变量Ediblee=newChicken();//oke.howToEat();//ok,“炸着吃"e.run();//wrong,可以调用的方法的范围是由变量决定的e.layAnEgg();//wrong,同上e=newCar();//wrong,Car类没有实现Edible接口Sleepables=newPig();//oks.Run();第63页,共75页,2023年,2月20日,星期四classTest{publicvoidrun(Runnablea){a.run();}}第64页,共75页,2023年,2月20日,星期四基本类(WrapperClasses)在程序中通常使用基础数据类型的数字进行运算:inti=500;floatgpa=3.65f;doublesum=i*gpa;但是有的时候需要对数据进行其他处理,例如数字和字符串的转换,为此,Java为每个基础数据类型提供一个相应的包装类。第65页,共75页,2023年,2月20日,星期四ObjectCharacterIntegerShortByteNumberFloatDoubleBoolean第66页,共75页,2023年,2月20日,星期四AppletJavaAp

温馨提示

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

评论

0/150

提交评论