版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章:Java面向对象 面向对象 1、什么是对象? 客观世界中的任何一个事务都是一个对象; 2、什么是面向对象? 以对象和数据结构为中心来构造软件系统的一种程 序设计方法。使得具有软件系统具有很好的可扩 展性、可维护性、可重用性; Object Oriendted Programming 对象以为导向的程序设计 面向对象编程 就是使用对象进行程序设计,简写成OOP。 面向对象 面向对象的编程语言 如今,面向对象的编程思想已经成为主流; 面向对象的编程语言正大行其道,最具代表性的 有: C+ Java C# 连数据库也开始面向对象了,如Oracle。 面向对象的编程思想 OOP 旨在计算机程序
2、中 模拟现实世界中的概念 在计算机程序中用相似的 实体模拟现实世界中的实体 在OOP中,现实世界的 所有事物全都被视为对象 设计和实现 软件系统的方法 C语言的编程方式 C语言是结构化的编程语言(Structured Programming,简作SP); 强调精巧的数据结构和优越的算法,关注程序的 运行效率; 不适合于大规模的程序开发; 程序模块之间协调性差,程序的重用性、安全性、 健壮性和可维护性都存在较大的缺陷。 SP和OOP对比 SPSPOOPOOP 设计思路设计思路自顶向下、层次化、分解自顶向下、层次化、分解自底向上、对象化、综合自底向上、对象化、综合 程序单元程序单元函数模块函数模块
3、对象对象 设计方法设计方法程序程序 = = 算法算法 + + 数据结构数据结构程序程序 = = 对象对象 = = 数据数据 + + 方法方法 优点优点相互独立,代码共享相互独立,代码共享 接近人的思维方式接近人的思维方式 模拟客观世界模拟客观世界 缺点缺点 数据与程序不一致数据与程序不一致 维护困难维护困难 客观世界的无序性客观世界的无序性 概念不成熟概念不成熟 面向对象的三大原则 封 装 继 承 多 态 对象 对象是面向对象编程的核心部分,是实际存在的 具体实体,具有明确定义的状态和行为; 对象其实就是“数据”和“函数”的封装体,其 中: 数据表示自身的状态,也称作“属性”或 “成员数据”;
4、 函数表示自身的功能,也称作“方法”或 “成员函数”。 姓名:布兰尼 职衔:收银员 年龄:35 体重:60千克 操作: 收款 打印帐单 收银员对象 顾客 姓名:朱丽叶 年龄:28 体重:52千克 操作: 购买商品 顾客对象 状态 行为 类 人们为了更好地认识世界,将现实生活中的事物 (对象)划分成类; 同一类中的事物总是具有一些共性; 类以共同的特性和行为定义实体; 类是具有相同属性和和行为的一组对象的集合。 属性 事物的特性在类中用变量表示; 每个对象的每个属性都拥有其特定的值; 属性名称由类的所有对象共享; 对象或实体拥有的特征在类中表示时称为属性。 学生对象 姓 名 年 龄 住 址 属
5、性 方法 事物的行为和动作在类中用函数表示; 每个对象都有相同的动作和行为; 对象执行的操作在类中表示为方法。 学生对象 吃 饭 方 法 睡 觉 上 课 类和对象的区别 类是用来描述实体的“模板”或“原型”; 对象是实际的实体,每一个对象都是类的一个具 体实例; 类用来定义对象所有的属性和方法,同一类的所 有对象都拥有相同的特征和操作; 可以将类理解成生产产品的模具,而对象则是根 据此模具生产的一个个产品。 类与结构 最简单的理解方式: 区别在于:结构体一般只有数据(属性)而没有函数(方法)。 类结构体 结构体变量对象 CJava 封装 将某些东西包装在一起,然后以新的完整形式呈 现出来; 隐
6、藏属性、方法或实现细节的处理方式称为封装; 封装其实就是有选择性地公开或隐藏某些信息, 它解决了数据的安全性问题。 一 个 人 类 的 对 象 姓名:张三 体重:50kg 密码:* 属性 走路 吃饭 方法 可以公开 无所谓 不可以公开 封装 java语言中,对象就是对一组变量和相关方法的 封装,其中变量表明了对象的状态,方法表明了 对象具有的行为。通过对象的封装,实现了模块 化和信息隐藏。通过对类的成员施以一定的访问 权限,实现了类中成员的信息隐藏。 继承 继承就是重用现有的类来生成新类的一种特征; 通俗地讲就是从现有的类(即父类或基类)创建 新类(子类或派生类)的过程; 现实生活中,继承可以
7、达到财产重用的目的,而 在Java中,继承可以使代码重用。 继承 通过继承实现代码复用。 Java中所有的类都是通过直接或间接地继承 java.lang.Object类得到的。 继承而得到的类称为子类,被继承的类称为父类。 子类不能继承父类中访问权限为private的成员 变量和方法。子类可以重写父类的方法,及命名 与父类同名的成员变量。但Java不支持多重继承, 即一个类从多个超类派生的能力。 注意:子类中重写的方法和父类中被重写的方法要具有注意:子类中重写的方法和父类中被重写的方法要具有 相同的名字,相同的参数表和相同的返回类型,只是函相同的名字,相同的参数表和相同的返回类型,只是函 数体
8、不同。数体不同。 Super的使用 java中通过super来实现对父类成员的访问, super用来引用当前对象的父类。Super 的使用 有三种情况: 1)访问父类被隐藏的成员变量,如: super.variable; 2)调用父类中被重写的方法,如: super.Method(paramlist); 3)调用父类的构造函数,如: super(paramlist); 多态 多态是指同一函数在不同的类中有不同的实现; 多态的好处就是使类更灵活,更便于扩充。 多态多态 在java语言中,多态性体现在两个方面:由方法 重载实现的静态多态性(编译时多态)和方法重 写实现的动态多态性(运行时多态)。
9、1) 编译时多态 在编译阶段,具体调用哪个被重载的方法, 编译器会根据参数的不同来静态确定调用相应的 方法。 2) 运行时多态 由于子类继承了父类所有的属性(私有的除 外),所以子类对象可以作为父类对象使用。程 序中凡是使用父类对象的地方,都可以用子类对 象来代替。一个对象可以通过引用子类的实例来 调用子类的方法。 抽象 把相同的或相似的对象归为一类的这个过程就是 抽象,所以,抽象就是分析问题的方法; 抽象的基本原则: 只关心主要问题,而不关心次要问题; 只关心主要矛盾,而不关心次要矛盾; 只关心相同的东西,而不关心不同的东西; 只关心问题是什么,能够完成什么,而不关心怎样去 完成。 抽象的过
10、程其实就是面向对象编程的核心思想。 在Java中定义类 /*定义学生类*/ class Student String name; /姓名 int age; /年龄 float weight; /体重 /*吃饭的方法*/ void dining() System.out.println(吃饱了.); weight+; /*走路的方法*/ void walk() System.out.println(走累了.); weight-; 成员变量 成员函数 定义类的语法 class 类名 成员列表 /包括成员变量和成员函数 在Java中定义类 struct 结构体名 成员列表 /只有成员变量,没有成员函
11、 数 ; 在C中定义结构体 习惯上,类名的首字母大写,如:Student 在Java中创建对象 /*Test类,用来容纳main方法*/ public class Test /*main方法,程序入口*/ public static void main(String args) Student std; /声明Student类型的引用 std = new Student(); /创建Student类型的对象 = 张三; /为姓名赋值 std.age = 18; /为年龄赋值 std.weight = 50; /为体重赋值 std.dining(); /调用成员方法 Syste
12、m.out.println(std.weight); std.walk(); System.out.println(std.weight); 创建对象的语法 和数组相似,对象也是引用数据类型,只能使用 new运算符从堆中分配内存; 创建对象的一般语法: 类名 引用名 = new 类名() ; 使用已经定义好的类,创建该类对象的过程称为 “实例化”。 注意:这里要有括号 成员运算符. 在C语言中,必须要先声明结构体变量,才可以 访问结构体中的成员; 同样的,只有先实例化类的对象,才可以访问到 类中的成员(属性和方法); 使用成员运算符(.)来访问成员属性或成员方 法; 一般语法是: 对象名.成员
13、名 如:std.age = 18; /为成员属性赋值 std.dining(); /调用成员方法 访问权限:public和private C语言中结构体的成员可以从任何地方进行访问, 这将给数据的安全留下极大的隐患; 为了避免从类外部直接访问类成员而造成的数据 损坏,Java对类成员的访问制定了约束; 关键字public和private是访问修饰符,用来说 明某个成员是否可以从类外部进行访问; public修饰的成员可以在任何地方进行访问,不 受任何约束; private修饰的成员只能够被本类中的其它成员 访问,而不能从类的外部进行访问。 访问权限 无法从类的外部访问私有成员; 其它类的私有成
14、员对于当前类也是隐藏的。 可以从类 外部访问 类 属性或方法 私有 属性或方法 公有 不可从类 外部访问 访问权限示例 class Student private String name; /姓名,私有的,不可以从类外部直接访问 private int age; /年龄,私有的,不可以从类外部直接访问 private float weight; /体重,私有的,不可以从类外部直接访问 /吃饭的方法,公有的,可以从任何地方访问 public void dining() System.out.println(吃饱了.); weight+; /dining方法是类内部成员,可以直接访问本类私有成员
15、/走路的方法,公有的,可以从任何地方访问 public void walk() System.out.println(走累了.); weight-; /walk方法是类内部成员,可以直接访问本类私有成员 public class Test public static void main(String args) Student std = new Student(); /实例化一个Student对象 std.age = 18; /试图从类外部访问私有成员,将会报出一个错误 std.dining(); /允许访问公有成员 访问权限(续) 加上访问修饰符有时候可能会给操作数据带来不 便,但可以在很
16、大程度上保证数据的安全; 一般地,我们会将成员属性声明为private,而 将成员方法声明为public,但这样做并不是绝对 的; 有时候,类外部可能要操作到某些私有数据成员, 那么就可以增加一个公有的方法,再由这个方法 来操作私有数据,避免因类外部的误操作而造成 的数据损坏; 因为main方法要由类外部的虚拟机来调用,所以 main方法必须声明成public。 修改Student类 class Student /定义学生类 private String name; /姓名,私有 private int age; /年龄,私有 private float weight; /体重,私有 publ
17、ic void setName(String name) /为姓名赋值的方法,公有 = name; public void setAge(int a) /为年龄赋值的方法,公有 age = a; public void setWeight(float w) /为体重赋值的方法,公有 weight = w; public void display() /将所有信息打印出来的方法,公有 System.out.println(姓名: + name + ,年龄: + age + ,体重: + weight); public void dining() /吃饭的方法,公有,代码略 p
18、ublic void walk() /走路的方法,公有,代码略 public class Test public static void main(String args) Student std = new Student(); /实例化学生类对象 std.setName(张三); /为姓名赋值 std.setAge(18); /为年龄赋值 std.setWeight(55); /为体重赋值 std.dining(); /调用吃饭的方法 std.display(); /将信息打印出来 对象初始化 在上例中,只能逐个地为数据成员赋值,如果想 在对象实例化的同时就初始化成员属性,就使用 到了构造
19、方法; 构造方法是特殊的成员方法,它与类同名,在对 象实例化时由虚拟机自动调用; 请注意:构造方法没有返回值类型,也不能有返 回值。 构造方法示例 /*定义ConstructorDemo类,对构造方法进行测试*/ class ConstructorDemo /*构造方法,方法名与类名完全一致 无需指定返回值类型,也不能有返回值*/ public ConstructorDemo() System.out.println(这是构造方法); /*Test类,用来容纳main方法 一般将包含有main方法的类声明为public*/ public class Test /*main方法,程序入口*/ p
20、ublic static void main(String args) /*实例化ConstructorDemo类的对象*/ ConstructorDemo cd = new ConstructorDemo(); 构造方法 正是由于在实例化对象的同时会自动调用构造方 法,所以构造方法一般用来给数据成员分配资源 或初始化数据成员; 构造方法的一般形式: 访问权限 类名(形参列表) 方法体 因为是由虚拟机来调用构造方法,所以构造方法 一般应定义成public。 为Student类添加构造方法 class Student /定义学生类 private String name; /姓名,私有 priv
21、ate int age; /年龄,私有 private float weight; /体重,私有 /构造方法,根据传递进来的参数,为数据成员赋值 public Student(String n, int a, float w) /分别为每个数据成员赋初始值 name = n; age = a; weight = w; public void setName(String n) /为姓名赋值的方法,公有,代码略 public void setAge(int a) /为年龄赋值的方法,公有,代码略 public void setWeight(float w) /为体重赋值的方法,公有,代码略 pu
22、blic void display() /将所有信息打印出来的方法,公有,代码略 public void dining() /吃饭的方法,公有,代码略 public void walk() /走路的方法,公有,代码略 public class Test public static void main(String args) /利用构造方法,为数据成员指定初始值 Student std = new Student(张三, 18, 55); std.display(); /将信息打印出来 构造方法(续) 每个对象在生成时都必须执行构造方法,而且只 能执行一次; 如果构造方法调用失败,那么对象也无
23、法创建; 不可以显式地直接调用构造方法; 在没有定义构造方法的情况下,类会自动产生一 个无参数的默认构造方法,这个默认的构造方法 什么都不做; 一旦显式地定义了构造方法,默认构造方法自动 消失。 方法重载 用于定义一组方法,这些方法具有相同的名称, 并执行类似的操作,但是却使用不同的参数列表; 编译器会根据调用时传递的实际参数自动判断具 体调用的是哪个重载方法,如: /*abs方法的重载*/ int abs(int x) float abs(float x) double abs(double x) long abs(long x) 方法重载的三大原则 方法名相同 参数不同(可以有三方面的不同
24、) 数量不同 类型不同 顺序不同 同一作用域 温馨提示:方法重载跟方法的返回值类型没有任何关 系。也就是说,只有返回值不同的方法不能构成重载。 /*错误的方法重载*/ void fun(int x) ; int fun(int x) ; 方法重载示例 public class AbsoluteValue public int abs(int x) /重载方式1,求整数的绝对值 return (x = 0) ? x : -x); public float abs(float x) /重载方式2,求浮点数的绝对值 return (x = 0) ? x : -x); public double ab
25、s(double x) /重载方式3,求双精度数的绝对值 return (x = 0) ? x : -x); public long abs(long x) /重载方式4,求长整型数的绝对值 return (x = 0) ? x : -x); public static void main(String args) AbsoluteValue obj = new AbsoluteValue(); int a = -8, b; b = obj.abs(a); System.out.println(a + 的绝对值是 + b); float c = -3.14f, d; d = obj.abs(c
26、); System.out.println(c + 的绝对值是 + d); 方法重载的两种方式之一 利用不同数据类型的参数重载; 对于带有相同数量参数但参数类型不同的重载方 法,编译器可以区分它们,如: 只要所有参数式样都是唯一的,就可以使用多个 重载; 很多编程语言已经重载了输出方法,以便您可以 用相同的函数名称输出任何类型的数据。 int square(int x) float square(float x) double square(double x) 方法重载的两种方式之二 利用不同数量的参数重载,如: 将调用与参数最匹配的方法,如果没有方法得出 最佳匹配,那么编译器将报错; 编译器
27、解决重载的方式与方法定义的顺序无关; 重载不考虑方法的返回值类型。 /*函数定义*/ int fun(int n1) int fun(int n1, int n2, int n3) /*函数调用*/ fun(a); fun(x, y, z); 方法重载的作用域规则 只有属于同一作用域范围内的方法才能构成重载。 class First public void show() class Second public void show(int x) 不构成重载 重载构造方法 方法重载的一个重要应用就是重载构造方法; 可以定义一组构造方法,使其构成重载关系,从 而方便使用者能够灵活机动地以各种不同的方
28、式 来实例化对象。 重载构造方法示例 class MyTime /定义时间类 private int mHour, mMinute, mSecond; /三个成员变量,时、分、秒 public MyTime() /构造方法重载1 mHour = 0; mMinute = 0; mSecond = 0; public MyTime(int mHour) /构造方法重载2 mHour = mHour; mMinute = 0; mSecond = 0; public MyTime(int hour, int minute) /构造方法重载3 mHour = hour; mMinute = minu
29、te; mSecond = 0; public MyTime(int hour, int minute, int second) /构造方法重载4 mHour = hour; mMinute = minute; mSecond = second; public void display() /显示时间信息的方法 System.out.println(mHour + : + mMinute + : + mSecond); 重载构造方法示例(续) /*测试时间类*/ public class Test /*main方法,程序入口*/ public static void main(String a
30、rgs) /分别调用不同的构造方法来初始化时间对象 MyTime t1 = new MyTime(); /调用重载方式1 t1.display(); MyTime t2 = new MyTime(8); /调用重载方式2 t2.display(); MyTime t3 = new MyTime(8, 30); /调用重载方式3 t3.display(); MyTime t4 = new MyTime(8, 30, 30); /调用重载方式4 t4.display(); /*使用重载构造方法可以使初始化对象的方式灵活机动,大 大方便类的使用者。*/ 对象在内存中的存放形式 成员方法1 成员方法2
31、 成员方法n 成员变量1 成员变量2 成员变量n 成员变量1 成员变量2 成员变量n 成员变量1 成员变量2 成员变量n 对象1 对象3 对象2 每个对象都有自己独立 的数据成员,但是所有 的对象共享成员方法。 this关键字 既然所有的对象都共用相同的成员方法,那么在 不同的对象都调用同一方法时,它是怎么确定要 使用哪个对象的数据成员呢? 每个成员方法都有一个隐含的this引用,它总是 指向调用它的对象; 关键字this给出用于调用成员方法的对象的地址; 每当调用成员方法时,编译器会向this分配调用 该方法的对象的地址; 可以像使用任何引用那样使用this。 this引用示例 /*this
32、示例,代码片段*/ public class Student /定义学生类 private String mName; /姓名 private int mAge; /年龄 public Student(String name, int age) /隐式调用,等同于this.mName = name; mName = name; /显式调用,等同于mAge = age; this.mAge = age; 回顾C语言中的静态变量 C语言中的静态变量的特点: 具有全局变量的生命周期(完成了某些全局变量 才能完成的功能); 具有有局部变量的作用域(比全局变量更安全)。 在C语言中声明静态变量的语法:
33、static int x; 声明静态变量使用关键字static。 static 编程题: 创建一个储蓄账户类,使用包含储蓄账户年 利率的静态数据成员,类应包含私有数据成 员balance,他表示账户中储户账户当前拥有 的总额。提供成员函数计算月利息。通过年 利率除以12 的商与余额相乘计算利息。此 利息应加入储蓄余额中。提供一个静态成员 函数modifyintrate,将静态变量年利率设置 成新值。编写一程序使用两个账户类对象 save1,save2测试此类,其余额为2000, 3500,年利率为3%。计算下月利息,并输出 每个储户的新余额。 静态成员变量 在成员变量前加static关键字,可
34、以将其声明为 静态成员变量; 如果类中成员变量被定义为静态,那么不论有多 少个对象,静态成员变量只有一份内存拷贝,即 所有对象共享该成员变量; 静态成员变量的作用域只在类内部,但其生命周 期却贯穿整个程序。 静态成员变量示例 class Dog public static int count = 0; /静态成员变量 public Dog() /构造方法 count+; public class Test public static void main(String args) System.out.println(当前狗的数量是: + Dog.count); Dog d1 = new Dog
35、(); Dog d2 = new Dog(); System.out.println(当前狗的数量是: + Dog.count); 静态成员变量的注意事项 和程序同生命周期; 在没有实例化对象时,可以通过类名访问静态成 员变量; 也可以通过对象访问静态成员变量,但不论使用 的是哪个对象,访问到的都是同一个变量; 静态成员变量在声明时最好初始化,如果不进行 初始化,系统会默认初始化为初始值。 静态成员方法 在成员方法前加static关键字,可以将其声明为 静态成员方法; 静态成员方法只能对类的静态成员变量进行操作; 静态成员方法没有this引用; 在没有实例化对象时,可以通过类名访问静态成 员方
36、法。 静态成员方法示例 class Dog private static int count = 0; /静态成员变量 public Dog() count+; /显示数量的方法,静态成员方法 public static void displayCount() System.out.println(当前狗的数量是: + count); public class Test public static void main(String args) /没有实例化对象之前,直接通过类名调用静态成员方法 Dog.displayCount(); Dog d1 = new Dog(); Dog d2 = n
37、ew Dog(); Dog.displayCount(); 静态成员小结 静态成员包括静态数据成员和静态成员方法; 静态成员属于整个类而不是属于某个对象,它被 该类的所有对象共享; 访问静态成员时一般通过类名访问,也可以通过 对象访问; 静态成员也受访问权限的约束; 静态数据成员在使用之前应尽量初始化; 静态成员方法不能操作非静态成员; 静态成员方法没有this引用。 包 有时候,类和类的名称可能发生冲突; Java提供了把类名空间划分为更容易管理的块的 机制,这就是包; 包允许将类组合成较小的单元,类似于文件夹; 有助于避免命名冲突,分属不同包的类即便名称 相同也不会引起误会; 能在包与包之
38、间对于类的访问权限提供更有力的 约束。 使用package关键字打包 可以使用package关键字将源文件中的类打入某 个包中,语法是: package 包名; 该语句必须是整个源文件的第一条语句; 包中还可以包含下一级子包,这与文件目录体系 非常相似。 /将本源文件中的所有类打到mypkg包中 package mypkg; class Student /定义学生类 缺省包 如果省略了package语句,类将保存在一个缺省 的没有名称的包中; 尽管缺省包很方便,但对于大型的程序,它是不 恰当的; 请尽量为自己编写的类定义具体的包。 使用import关键字导入包 如要使用到某个包中的类,就需要使
39、用import关 键字将包或类显式地包括到程序中,有如下两种 情况: 一个程序中允许有多条import语句,导入多个包 或多个类。 /*导入java包下的io子包中的所有类*/ import java.io.*; /*导入mypkg包下的Student类,但并不导入该包中的其它类*/ import mypkg.Student; final的使用 final 关键字 final 关键字可以修饰类、类的成员变量和 成员方法,但final 的作用不同。 1) final 修饰成员变量: final修饰变量,则成为常量,例如 final type variableName; 修饰成员变量时,定义时同时
40、给出初始值, 而修饰局部变量时不做要求。 2) final 修饰成员方法: final修饰方法,则该方法不能被子类重写 final returnType methodName(paramList) 3) final 类: final修饰类,则类不能被继承 final class finalClassName abstract的使用 抽象类 java语言中,用abstract 关键字来修饰一 个类时,这个类叫做抽象类,用abstract 关键 字来修饰一个方法时,这个方法叫做抽象方法。 格式如下: abstract class abstractClass /抽 象类 abstract returnType abstractMethod(paramlist) /抽象方法 抽象类必须被继承,抽象方法必须被重写。 抽象方法只需声明,无需实现;抽象类不能被实 例化,抽象类不一定要包含抽象方法。若类中包 含了抽象方法,则该类必须被定义为抽象类。 interface 接口 接口是抽象类的一种,只包含常量和方法的 定义,而没有变量和方法的实现,且其方法都是 抽象方法。 interface 通过接口实现不相关类的相同行为,而无需考虑 这些类之间的关系。 通过接口指明多个类需要实现的方法。 通过接口了解对象的交互界面,而无需了解对象 所对应的类。 接口的实现 在类的声明中用implements子
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年延边职业技术学院单招职业适应性测试模拟试题及答案解析
- 中医理疗对慢性肺气肿的改善
- 心理创伤与康复护理
- 免疫第三章免疫器官
- 慢性疼痛管理方法探索
- 医疗机构成本控制与预算优化
- 医学伦理与法律法规研究进展
- 内分泌系统疾病护理与管理
- 2026北京房山区教育委员会所属事业单位招聘专业技术人员120人(一)备考笔试题库及答案解析
- 2025海南航空审计监察负责人岗位招聘1人备考笔试题库及答案解析
- TE1002常见终端产品配置维护-ZXV10 XT802
- 工艺部门技能提升培训计划
- 北京市昌平区2024-2025学年三年级上学期期末数学试题
- 15万吨电解铝工程施工组织设计
- 超精密加工技术期末考试
- 食堂干货调料配送方案(3篇)
- 医院住院部2024工作总结及2025工作计划
- 水泵房卫生管理制度
- 山东中医药大学学位考试-中医学毕业综合考试试题及参考答案
- 病房质量管理分析
- 广西南宁二中、柳州高中2025届高三最后一模物理试题含解析
评论
0/150
提交评论