已阅读5页,还剩100页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
安徽大学 4.类与对象 主讲:王华彬 知识点 v变量作用域 v构造方法 v方法重载 v参数传递 v实例成员和类成员 vpackage vimport v访问权限 v可变参数 Java技术及其应用 面向对象的三个特性: 封装、继承和多态 本章学习封装性 v类的封装性体现在,把一类事物所具有的相同的 属性和方法封装在一起。 v然后通过定义该类的一个对象,进而对该对象的 属性赋值,调用类的方法,从而完成一定的功能 封装性 v 汽车类: CLASS car v 属性: v 颜色, 灰色、红色、黄色 v 品牌, 法拉利、现代、马自达 v 类型, 赛车、轿跑车、SUV v 方法: v 启动 v 前进 v 倒车 v 熄火 v car 罗院长的车 =new car(); v 罗院长的车.carColor=gray;罗院长的车.carBrand=现代; v 罗院长的车.carStart();罗院长的车.carStop(); 封装性 v 手机类: CLASS phone v 属性: v 颜色, 灰色、红色、黄色 v 品牌, 苹果、谷歌、三星 v 类型, 触屏、直板、翻盖 v 方法: v 开机 v 拨号 v 挂断 v 关机 v phone 王玮的手机 =new phone(); v 王玮的手机.phoneColor=gray;王玮的手机.phoneBrand=诺基亚*; v 王玮的手机.phonePoweron();王玮的手机.phonePoweroff(); 类定义的一般要求 class Rect double width; double height; double getArea() double area=width*height; return area; 要求:类名是合法标示符,且容易理解 定义一个类包括三步: 取类名 定义属性 定义方法 类定义的一般要求 v class car v int carBrand; v char carColor; v int carKind; v /属性一般写在方法前习惯先定义属性,再定义方法; v /一行只定义一个属性,不提倡int carBrand , carKind; v /变量首字母小写,第2个单词开始字母大写 v int startCar(); v int forward(); v int reversing(); v int stopCar(); ; /方法 函数 v v 类的属性 或称为成员变量 类的属性初始值 class Rect double width; double height; double getArea() double area=width*height; return area; Java技术及其应用 class 类名 成员变量; 成员方法; width=0.0; height=0.0; 类成员变量可以不赋初值,默 认0,false; 局部变量需要赋初值。 类的属性初始值 class Rect double width=1; double height; double getArea() double area=width*height; return area; vclass test vpublic static void main(String args) vRect r=new Rect(); v System.out.println(r.width); v System.out.println(r.height); v v 思考:程序的输出? Java技术及其应用 double width; width=1; 变量作用域 class Rect double width; double height; double area; double getArea() double area=width*height; return area; void setHeight (double height) this.height=height; Java技术及其应用 成员变量 方法体内 局部变量 方法的参数 变量 v成员变量,即属性的有效区是整个类; v方法中的局部变量的有效区是该方法; v方法的参数的有效区在该方法中; v当成员变量和方法的局部变量或方法的参数变量 相同时,成员变量被隐藏, v即:成员变量在方法中暂时失效 Java技术及其应用 this关键字 v当成员变量被同名的局部变量或方法的参数变量 隐藏时(即成员变量在方法中暂时失效), v为了表示成员变量,可以用this.成员变量为指代 vthis指向调用该成员方法的对象。 vRect r=new Rect (); this可以理解是r的引用 变量作用域例题 class Variable int x=10;/成员变量 int y; void init() int x=5; y=x; System.out.println(y); 思考:程序输出? /此时y=x=5, 变量作用域例题 class Variable int x=10;/成员变量 int y; void init() int x=5; y=this.x; System.out.println(y); /此时y=x=10, class Variable int x=0,y=0,z=0;/成员变量 void init(int x,int y) this.x=x; this.y=y; int z=5;/方法中的局部变量 System.out.println(x+“ “+y+“ “+z); Variable v=new Variable(); System.out.println(v.x+“ “+v.y+“ “+v.z); v.init(20,30); System.out.println(v.x+“ “+v.y+“ “+v.z); 20 30 v.x=20 v.y=30 再来一个例题 public class A void f() int m=10,sum=0; if(m9) int z=10; z=2*m+z; for(int i=0;im;i+) sum=sum+i; m=sum; z=i+sum; Java技术及其应用 编译错,错在哪儿? Z的有效区在if; i的有效区在for 课后习题4-8 class B int x=100,y=200; public void setX(int x)x=x; public void setY(int y)this.y=y; public int getXYSum() return x+y; Java技术及其应用 B b=new B(); b.setX(-100); /成员变量b.x=? b.setY(-200); /成员变量b.y=? System.out.println(b.getXYSum(); /成员变量x=100; /成员变量y=-200 /X+y=-100 变量作用域知识点小结 v类的成员方法中定义的局部变量或成员方法的参数 变量都会隐藏掉同名的类的成员变量, v这时可以使用this关键字来表示同名的类的成员变量 vthis关键字指向调用该成员方法的对象。 Java技术及其应用 v已经介绍了类的属性,接下来是: ? v类的方法 或称为成员函数 v1、构造方法 v2、成员方法 构造方法 public class Example public static void main(String args) Rect r1= new Rect(); /创建对象 r1.width=128;/使用对象 r1.height=69; double area=r1.getArea(); System.out.println(“rectangle的面积 :“+area); Java技术及其应用 分配空间,并初始化对象,调用构造方法 构造方法 class Rect double width; double height; double getArea() double area=width*height; return area; Java技术及其应用 Rect() v构造方法是一种特殊的方法 v构造方法名和类名相同 v无返回类型 v构造方法在new创建对象时被调用 v若无构造方法,按照默认的构造方法仅分配空间 v构造方法可以重载 Rect r1=new Rect(); v构造方法: 是一个函数 v 和类类同名 v 对类对类 的属性进进行赋值赋值 v 可以重载载, 构造方法的重载 class Rect double width; double height; Rect() width=10.0; height=20.0; Rect(double x,double y) width=x; height=y; double getArea() 构造方法名相同,而 参数的个数或类型不同 Rect() 构造方法的调用 public class Example public static void main(String args) Rect r1= new Rect(); /创建对象 double area1=r1.getArea(); Rect r2= new Rect(1,2); /创建对象 double area2=r2.getArea(); Java技术及其应用 一个类可以定义多个构造方法,根据参数个数或类型不同, 使用不同的构造方法, 构造函数作用是:为对象分配内存空间,为对象的属性赋初始值 方法重载(Method Overloading) v多个方法可以享有相同的名字 v方法的参数必须不同 或者是参数个数不同; 或者是参数类型不同; v完成的功能相似 v返回类型不能作为区分函数重载的标准 方法重载的好处 v要打印不同类型的数据:int, float, String,不 需要定义不同名的方法名: printInt(int); printFloat(float); printString(String); v利用方法重载,只需要定义一个方法名print() ,接收不同的参数: print(int); print(float); print(String); class MethodOverloading void receive(int i) System.out.println(“Receive one int data “); System.out.println(“i=“+i); void receive(int x,int y) System.out.println(“Receive two int datas “); System.out.println(“x=“+x+“ y=“+y); 方法重载例题 void receive(double d) System.out.println(“Receive one double data “); System.out.println(“d=“+d); void receive(String s) System.out.println(“Receive a string “); System.out.println(“s=“+s); 方法重载例题 public class MethodOverloadingTest public static void main(String args) MethodOverloading mo=new MethodOverloading(); mo.receive(1); mo.receive(2,3); mo.receive(12.56); mo.receive(“very interesting,isnt it“); 方法重载例题 多态性:发送消息给某个对象, 让该对象自行决定响应何种行为。 v书上例题4-11,见.Java文件 Java技术及其应用 练习 v课后习题4-10 Java技术及其应用 小结 v构造方法 构造方法是一种特殊的方法 方法名和类名相同 无返回类型 构造方法在new创建对象时被调用 若无构造方法,按照默认的构造方法仅分配空 间 构造方法可以重载,即可以有多个构造方法 Java技术及其应用 类的方法 v与c语言的函数定义基本相同,只不过在类中称为 方法,在此不再赘述 。 v需要注意的是:在方法体内,成员变量和局部变 量的区别。其实可以把成员变量当做全局变量理 解即可。 小结 v方法重载 多个方法可以享有相同的名字 方法的参数必须不同 或者是参数个数不同; 或者是参数类型不同; 完成的功能相似 返回类型不能作为区分函数重载的标准 体现面向对象的多态性 Java技术及其应用 类变量和简单数据类型变量的 区别 Circle c1; int i; Java技术及其应用 只声明,未分配空间,c1=null 声明的同时分配空间 简单数据类型变量 int i; i=1; int j; j=2; j=i; Java技术及其应用 i j 1 2 1 i和j分别指向两块不同的内存区域。 j=I;把i中的内容复制到j中; 类变量 Java技术及其应用 Circle c1; c1=new Circle(); Circle c2; c2=new Circle(); c2=c1; c1 c2 c1和c2指向同一块内存区域。 c2=c1;c2相当于c1的引用; 此时,c2原来的内存空间被释放; 几条注意事项 1、不要定义没有实体的类的空对象,必需通过 new+构造函数创建对象; 2、对象的名字,可以认为是该对象对应内存区域的 一个引用,即:一个别名。如果对象直接进行赋 值,则原先的内存被释放。 3、在java语言中,类只有构造方法,没有析构方法 ,只是因为java语言有垃圾回收机制。这也正是 java程序一般很少有内存泄露的原因。 v已经介绍了类的属性和方法, v包括:成员变量的作用域 v 构造函数及重载 v 对象创建的原理 v接下来,介绍一下方法的参数传递中的注意事项 成员方法参数 v参数的类型: 简单数据类型:传值,不改变参数的值; 引用数据类型(数组类型、类或接口):传地 址,可改变参数的值; class Method void receive(int i)i=6; 在main函数中,执行如下代码,思考输出? Method m=new Method (); int a=5; m. receive(a); System.out.println(a); 此时:a为全局变量,通过 参数i传到receive方法中, i相当于a的复制品, i的改变不改变a的值 class Method void receive(int i)i=6; 在main函数中,执行如下代码,思考输出? Method m=new Method (); float a=5; m. receive(a); System.out.println(a); 参数传递的值的级别 不能高于该参数值, 可以低于该参数值 参数传递 v当传递的参数是简单类型的时候,传值,方法调 用结束后原值不变; v当传递的参数是引用类型的时候,传地址,方法 调用结束后原值会变。 vint a=5; vvoid receive(int i)i=6; Java技术及其应用 5 56 a ii v如果参数是引用的话: v当传递的参数是引用类型的时候,传地址,方法 调用结束后原值会变。 v注意: 对象名是一种引用 5 a i 6 i=6 v再看一个综综合性的例子! 传值和传地址举例 public class PassTest float ptValue; public void changeInt(int value) value=55; public void changeObjValue(PassTest ref) ref.ptValue=99f; public static void main(String args) int val; PassTest pt=new PassTest(); val=11; pt.changeInt(val); /val=? pt.ptValue=101f; pt.changeObjValue(pt); /pt.ptValue=? 练习 Java技术及其应用 课堂练习 : 请同学们思考结果,并解释 public class Swap void swapp(int x,int y) int temp; System.out.println(x+“,“+y); temp=x; x=y; y=temp; System.out.println(x+“,“+y); public static void main(String args) int u=30,v=50; System.out.println(u+“,“+v); Swap s=new Swap(); s.swapp(u,v); System.out.println(u+“,“+v); 练习 Java技术及其应用 public class Swap1 int x,y; void swapp(Swap1 s) int temp; System.out.println(s.x+“,“+s.y); temp=s.x; s.x=s.y; s.y=temp; System.out.println(s.x+“,“+s.y); int u=30,v=50; Swap1 s=new Swap1(); s.x=u; s.y=v; System.out.println(s.x+“,“+s.y); s.swapp(s); System.out.println(s.x+“,“+s.y); 参数传递小结 v当传递的参数是简单类型的时候,传值,方法调 用结束后原值不变; v当传递的参数是引用类型的时候,传地址,方法 调用结束后原值会变。 Java技术及其应用 v在之前的学习习中,我们们知道: 类类的属性和方法,必须须先创创建对对象,然后通过过 对对象调调用,为为什么输输出函数可以直接调调用呢? System.out.println(); 请请同学们们思考: System是什么? Out是什么? println()是什么? v类成员 和实例成员 vstatic关键字 v静态成员:静态成员变量和静态成员函数 static关键字 class 类名 成员变量; 成员方法; class 类名 成员变量; 成员方法; static static 实例成员 类成员或 静态成员 类变量 和实例变量 v类的组成部分是: v属性和方法,及成员变量和成员函数 v成员变量的类型分为两种: vclass rect v int weight; /实例变量 v static int height; /类变量或静态变量 v v由static修饰的成员变量,称为类变量。 v1、一个类的不同对象,分别分配空间,一个对象 的实例变量改变,不影响其他类; v2、但是对于类变量,在字节码文件加载到内存时 ,如果没有创建对象,实例变量就不分配内存, 而类变量分配了内存,思考:意味着什么? 而且,所有的对象的类变量都共享同一个内存 ,即:如果一个对象的类变量改变,其他对象的 类变量也同时改变。 类成员和实例成员 v类成员(属性或方法) 用static修饰的成员; 属于类; 所有对象共享一个类成员,只有一个。 v实例成员(属性或方法) 无static修饰的成员; 属于对象; 每个对象都有各自的一个,相互独立。 类成员和实例成员 v类成员 用类名或对象名来调用; 对类成员的修改影响整个类的所有对象的类成 员; 类成员方法只能对类成员变量进行操纵; v实例成员 用对象名来调用; 对某对象实例成员的修改不会影响其他对象的 实例成员; v class Student vString name; vstatic String school=“北京大学“; v v class t vpublic static void main(String args) v System.out.println(Student.school);/正确 v System.out.println(Student. name); /错误 v Student stu1=new Student(); vSystem.out.println(stu1.school); v System.out.println(stu1. name); v v /对于类变量,可以在主函数中,不创建该类对象,而直接使用类名 进行调用,也可以通过创建对象,通过对象进行调用,共享内存 实例成员和类成员举例 v举例memberTest.java 类memberTest 类变量a 实例变量b 方法 。 对象a对象b对象n 类变量a 实例变量b 函数 类变量a 实例变量b 函数 类变量a 实例变量b 函数 类变量a 方法 实例成员方法在生成第一 个对象时被分配了入口地 址; 类成员方法在类被装载内 存时被分配了入口地址; Student.java public class Student String name; static String school=“北京大学“; public static void main(String args) Student stu1=new Student(); Student stu2=new Student(); Student stu3=new Student(); =“1“; =“2“; =“3“; System.out.println(+“,“+stu1.school); System.out.println(+“,“+stu2.school); System.out.println(+“,“+stu3.school); stu2.school=“安徽大学“; System.out.println(+“,“+stu1.school); System.out.println(+“,“+stu2.school); System.out.println(+“,“+stu3.school); /思考程序的输出结果 Java技术及其应用 v 对于方法,也分为:类方法和实例方法 v class rect v int start() /实例方法 v static int stop /类方法 v v 1、对于实例方法,只有创建对象后,通过对象调用。 v 2、对于类方法,可以不创建对象直接通过类名调用,也 可以创建对象,通过对象调用。 v 3、实例方法可以调用实例变量和类变量,而类方法不能 调用实例变量,思考为什么? v 因为:类方法在对象创建之前就可以使用,而此时实例变 量还没有分配内存。 v class Student vString name; vstatic String school=“北京大学“; v vvoid start1() v System.out.println(name); System.out.println(school); v v vstaticvoid start() v System.out.println(name); v System.out.println(school); v v 练习 v class Student vString name; vstatic String school=“北京大学“; vvoid start1() vSystem.out.println(name); System.out.println(school); v v staticvoid start() System.out.println(school); v v class t vpublic static void main(String args) vStudent.start(); /类方法,可由类名直接调用 v v v Java技术及其应用 main()方法 思考:为什么main()方法用static修饰? public class Student public static void main(String args) java 类名.main() Student .main() 一个类的main方法必须用static修饰,因为Java 运行时系统在开始执行一个程序前,并没有生成 类的一个实例,它只能通过类名来调用main方法 作为程序的入口。 static关键字小结 v用static修饰的类中的成员变量或成员方法,都称 为类的成员;-类 v没有用static修饰的,称为实例成员。-对象 v类的成员唯一;而对象的成员有多个,每个相互 独立。 v类的成员由类或对象来调用;实例成员由对象来 调用 v类的成员在类有了之后就存在了,而实例成员必 须在生成对象之后才存在。 Java技术及其应用 v 思考: v this 关键字 能否在类方法中调用?为什么? class Rect static double width; static double height; double area=0; static double getArea() double area=width*height; return this.area; 思考2: v 在Java编程中,我们常常用System.out.println()方法来 输出字符串,也许我们都已经猜到println()是方法名,但 System是什么,out又是什么呢? v 其实System是java.lang包里面的一个类 v 而out就是System类里面的一个静态成员变量,其类型 是java.io.PrintStream类; v 被关键字static修饰的数据成员或方法可以直接通过“类 名.数据成员”或“类名.方法”来引用,而无须先建立对象。 所以System.out是应用了out这个静态数据成; v 而out又是一个java.io.PrintStream类的对象,所以out 必然可以调用java.io.PrintStream类里面的方法, println()就是java.io.PrintStream类里的一个方法,它的 作用就是用来想控制台输出信息的 vclass System v static java.io.PrintStream out; v v / System. out vclass PrintStream v println() v v / System. out . println() 包(package) v由于Java编译器为每个类生成一个字节码文件, 且文件名与类名相同, v因此,同名的类有可能发生冲突。为了解决这一 问题,Java提供包来管理类名空间。 v比如:同一文件夹下,不能有相同名称的文件, 而不同文件夹下的文件名可以相同。 v c:/我的音乐/国歌.MP3 v c:/我的音乐/好听/国歌.MP3 v 包(package) Ex1.java public class Ex1 class A package p1; public class Ex1 class A p1.A Ex2.java public class Ex2 class A package p2; public class Ex2 class A p2.A package语句 vpackage语句作为Java源文件的第一条语句,指 明该文件中定义的类所在的包。(若缺省该语句, 则指定为无名包)。它的格式为: package pkg1.pkg2.pkg3; vJava编译器把包对应于文件系统的目录管理, package语句中,用 . 来指明目录的层次; package语句 package p1; public class Ex1 class A p1.A p1/A.class package p2; public class Ex2 class A p2.A p2/A.class vpackage 的实际含义是指:定义当前java文件所 在的文件夹路径,以及生成字节码文件的路径 命令行下编译和运行带包的Java程序 v若无package语句,类都放入缺省的无名包中 ,对应于当前文件夹; v若有package p1; package p1; public class Ex1 Ex1类放入p1包内, 对应于文件目录:当前目录下创建p1文件夹, 下放Ex1.java文件 编译方式:javac p1Ex1.java 运行方式:java p1.Ex1 练习 package s1.s2.s3.s4; public class Hello 如何存放Hello.java文件? 如何编译和运行? 当前文件夹下创建s1,再创建s2,再创建s3, 再创建s4,在s4里面放Hello.java 在当前文件夹下javac s1s2s3s4Hello.java 在当前文件夹下java s1.s2.s3.s4.Hello Java技术及其应用 JCreator处理带包的Java程序 package p1; public class Ex1 class A vJcreator不需把源文件放入p1中,自动在当前文 件夹下创建子目录p1,并将生成的字节码文件 Ex1.class和A.class存入其中。 Java技术及其应用 v同一个包,即同一个文件夹下的类可以互相调用 ,如果属于不同包的类,怎么处理? v import命令 import语句 v为了能使用不在同一个包中的其他类,我们需要 用import语句来引入所需要的类。 import package1.package2. (classname |*); 例如: import java.awt.*; import java.util.Date; vJava编译器为所有程序自动引入包java.lang,因 此不必用import语句引入它所包含的所有类。 import语句 vimport java.util.Date; vjava/util/Date.class v当前目录下没有java文件夹!? v包的根目录由classPath决定。 vclassPath: vc:/Program files/java/jdk1.6/jre/lib/rt.jar;.; v思考:如何引入自定义包? Java技术及其应用 v 之前,我们做的所有实验,都没有定义包,如果一个源文件 没有使用包语句,则得到的类没有包名,该类如果被使用, 必须放在需使用工程的目录下。 v 但是,如果有其他包中的类名和该无包类的类名相同,就可 能产生混淆。 v 比如:现有工程下有一个无名包中的类 A;通过import又引 入了一个类:tom.A,则默认情况下, A类认为是tom.A。 v 正确的使用方法是: v tom.A a=new tom.A(); /tom.A类 v A a=new A(); /无名包A类 v import语句 import java.util. Date ; class myDate Date date=new Date(); Class myDate java.util.Date date=new java.util.Date(); 小结 package p1; 即指明当前java文件的包路径,方面 进行工程管理。 Import ,引入其他包中的类,如果引入自定义包中 的类,需要在环境变量中设置CLASSPATH。 Import 其他包中的类时,一般情况下,最好把类和 包的全名都写上。即: import a.b.c /引入a.b下的c类 a.b.c test=new a.b.c(); 而不要写成c test=new c(); 小结:Java程序结构 package p; import ; import ; class class public class . Java技术及其应用 0-1个 0-多个 0-多个 1个 访问权限 class 类名 成员变量; 成员方法; 类名 对象名=new 类名(); 对象名.成员变量; Java技术及其应用 成员的访问权限 v对类的成员施以一定的访问权限限定,实现类中成 员在一定范围内的信息隐藏 同一个类中 同一个包中 不同包中的子类 不同包中的非子类 private default protected public 成员的访问权限 vprivate:同类。 vdefault:同类,同包。默认情况下都是default。 vprotected:同类,同包,子类(不一定要同包) 处在不同包中的子类可以访问父类中限定为protected 的成员,但这时访问这些成员的对象必须具有子类的类 型或是子类的子类类型,而不能是父类类型。 vpublic:所有 private class Tom private float weight; private float f(float a,float b) return a+b; class Jerry void g() Tom cat=new Tom(); cat.weight=23f; float sum=cat.f(3,4); Java技术及其应用 public class Tom public float weight; public float f(float a,float b) return a+b; class Jerry void g() Tom cat=new Tom(); cat.weight=23f; float sum=cat.f(3,4); Java技术及其应用 default class Tom float weight; float f(float a,float b) return a+b; class Jerry void g() Tom cat=new Tom(); cat.weight=23f; float sum=cat.f(3,4); Java技术及其应用 protected class Tom protected float weight; protected float f(float a,float b) return a+b; class Jerry void g() Tom cat=new Tom(); cat.weight=23f; float sum=cat.f(3,4); Java技术及其应用 成员的访问权限 v对类的成员施以一定的访问权限限定,实现类中成 员在一定范围内的信息隐藏 同一个类中 同一个包中 不同包中的子类 不同包中的非子类 private default protected public 练习 v课后习题4-7 Java技术及其应用 访问权限一般做法 class 类名 private folat height; private folat width; public void setHeight(float height) this.height=height; public void setWidth(float width) this.width=width; public float getHeight() return
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年外二科病历书写基本规范培训考试题(附答案)
- 2025至2030中国金属标准件行业项目调研及市场前景预测评估报告
- PEP六年级英语上册单元教学计划
- 2025年雅安市公益性岗位招聘真题
- 乌海市公费师范生招聘真题2025
- 赤峰市公费师范生招聘真题2025
- 2025年辽宁残疾人联合会招聘考试真题及答案
- 期货从业资格证考试时及答案解析
- 肇庆考试完办从业资格证及答案解析
- 2025至2030中国儿童游乐园行业项目调研及市场前景预测评估报告
- 超支化聚合物改性技术在环氧树脂性能提升中的应用
- 公司创始人视频策划方案
- 产妇心理护理课件教学
- 2025年巴彦淖尔临河区妇幼保健院招聘工作人员题库带答案分析
- 公司高管租房管理制度
- T/CBMCA 039-2023陶瓷大板岩板装修镶贴应用规范
- 未成年学徒合同协议书
- 2025年广东省商品房买卖合同范本
- 承包炉渣合同协议书范本
- 2025上海开放大学经济法概论第1、2、3次记分作业答案
- 《思想道德与法治》课件-第四章 明确价值要求 践行价值准则
评论
0/150
提交评论