




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章 面向对象1.首先为什么选择面向对象语言开发程序。面向对象编程可以现实生活中真实存在的事物直接映射到程序中。2.面向过程的缺点:现实生活中业务需求抽象成算法,直接映射成函数,一旦算法改变,函数便需要重新写,对系统的其他模块影响很多。当系统模块逐渐复杂,算法与算法之间复杂性大大增强,函数复杂性较高,不适大型项目的开发。3.程序=算法+数据结构;面向过程主要研究算法;而面向对象主要研究数据结构。4.类和对象类:简单的说,类就是类型。一组具有相同特征和功能的事物,我们说,他们是一类的。普遍的抽象的事物。对象:利用一抽象好的类型,创造一个符合这个类型的事物。怎么区分类和对象:哲学上讲,人们认识事物的过程可以:从特殊一般特殊。比如:想创建一个显示器的类,可以先找一个具体的现实,研究他有什么特征和功能。然后抽出一个具有这些特征和功能的模型,这就是一个显示器的类。利用个类抽象好的类,创造一个具有这个类的特称和功能的事物,这个事物就是对象。5.现实世界与计算机世界引申同一个事物,在不同环境下,不同人对其有不同的理解。在程序中,由于研究领域的不同,需求不同,对同一事物,可能有不同的理解和映射。在自己的项目中,我们只关心与我们项目有关的事物的特征与功能。例:在学生管理系统中,创建学生类没必要设置血型的属性。6.创建对象的语法:利用new关键字数据类型 对象 = new 数据类型();例:String str = new String(“ssss”);new关键字就是调用构造器用的。利用构造器创建对象并初始化,如果一个变量没有创建对象并初始化,那么这个变量不能使用。Student str = new Student();Student str为声明一个Student的变量,在内存中的栈空间分配资源。new Student()为调用构造方法,创建一个对象,在堆中分配资源;str = new Student(); 利用“=”,把栈中的变量连接到堆中的对象上。Java中的对象是在堆中创建。怎么判断是否创建对象,一般看有几个new 构造器,一个new 构造器,就在堆中开辟一个对象。用类创建对象也叫对象的实例化。声明变量是在栈中定义的。所有基本数据类型全部在栈中定义。题:ClassDemo objectName = new ClassDemo(); ClassDemo objectName2 = new ClassDemo();创建了两个对象,因为两个new 调用了两次构造方法。7.类中都能写什么(不包括内部类的情况)属性:对应显示生活中事物的特征。方法:对应显示生活中事物的功能。构造器(构造方法,构造函数)块(静态块,动态块)8.属性:对应显示生活中事物的特征。只能在类中定义(也可以是接口之类)语法:修饰符 数据类型 属性名;例:private String name;JVM默认给他们初始化。所有属性都有默认值:int为0,复合数据类型默认为null9.方法:对应显示生活中事物的功能。只能在类中定义(也可以是接口之类)语法:修饰符 方法的返回值类型 方法名(参数列表)例:public void setName(String name) public void method(参数类型1 变量1,参数类型2 变量2)10.构造器的作用与特点作用:就是创建对象并初始化。特点:与类名相同,无任何返回类型,这里无返回类型,并不是返回空类型,即void。如果没有为类定义一个显示的构造方法,那么,系统会为程序提供一个“共有的,无参的构造函数”,如果用户自定义了构造器,那么体统不会为用户再创建一个无参共有的构造器。用户创建对象时,利用new关键字调用构造函数,如果这个类都没有这个构造函数,那么就不能调用了。例:类Student的构造方法:为public Student(参数列表)11.块块分:静态块:只在第一次类加载时,执行一次。动态块:每创建一个对象,即每调用一次构造,均执行一次。类中各个部分的执行顺序:静态块静态方法块构造方法实例方法public class Demo4 staticSystem.out.println(静态块);System.out.println(动态块);public static void staticShow()System.out.println(静态方法);public void show()System.out.println(普通方法);public Demo4()System.out.println(构造方法);public static void main(String args) Demo4.staticShow();new Demo4().show();打印:静态块静态方法动态块构造方法普通方法12.null为空对象,表示没有创建对象例:String str1 = “”;创建对象了,可以使用str1String str2 = null;没有创建对象,不可以使用str2null与“”的区别:null没有开辟内存空间,“”开辟内存空间,但是,没有存储东西。因为,只有开辟空间的才能使用,所以,“”可以使用,null不可以。13.Java源文件中都能写什么注释除外,Java源文件中不同内容存在顺序之分package mypage;/包语句import 包;/倒包语句class或interface等的定义。一个Java源文件可以写多个类,但不推荐使用。14.包:package关键字包的作用:管理并组织代码。由于不同开发的程序有可能有相同的类或接口,为了使他们同时存在,这时要使用包。由于一个工程,不同代码完成不同的功能,因此,可以利用包,来区分不同的代码模块,例:dao包中放操作数据库的类,service包放工程的业务逻辑类等等。注意:包名的定义采取小写字母,不要用中文。包名也不能重复,为了避免包名的重复,企业中采取域名倒转的形式定义包语法:package 域名.公司名.项目名.模块名.;例:package com.px1987.studentsystem.dao;package com.lfy.shoppingsystem.service;15.面向对象的特点抽象,封装,继承,多态抽象:我们从现实世界,从事物中提取对我们项目有用的东西,提取成概念。封装:把抽象成的概念在计算机中写成类,接口等。例如:类封装了这个事物的特称和功能。封装的作用,用于创建类和隐藏类中的信息。组合:就在来类中使用了另一个类或接口,也可扩展其他类的。public class Demo5 private String str;private Apple apple;public void show(Apple apple)this.apple = apple;16.访问控制权限: 用于封装和隐藏信息的,除内部类外,访问控制权限只能修饰属性,方法,构造器,不能修饰方法内的变量。分为4中:public ,protected,默认,privatepublic:访问权限最高,在此工程下均可以访问。protected:只能在本包中的类,或其他包中的子类可以访问。默认(也就是什么也不写):在本包中使用。private:访问权限最低,只能在本类中使用。注意:以后除非程序特殊设计,否则,属性全部私有(private),并为这些属性设置setter和getter方法,由于访问和修改这些属性。17.继承:现实生活中,存在着一种继承的关系,继承者会得到被继承的一些特称和功能。Java中继承利用extends关键字继承的好处就是:可以获得父类的某些属性和方法。继承的坏处就是:破坏类的封装性。注意:Java中只支持单继承,继承的类只能继承父类的共有方法和protected方法。包括共有属性和protected属性。例:public class Fatherpublic class Son extends Father18.多态(在现实生活同一种事物,在不同的条件,呈现出不同的状态)。例:同样是洗的功能,洗衣服与洗车是不一样。多态在代码中体现2种形式:重写,重载重写:在有继承关系的两个类中,父类具有一个方法A();子类继承方法A(),但是,之类不想拥有和父类一致的方法A(),这样在子类中可以重新定义A()。public class Graph public void drawMe() throws NullPointerExceptionSystem.out.println(画一个图形);public class Triangle extends Graphpublic void drawMe()System.out.println(画一个三角形!);重写特点:1.必须与父类要重写方法的名字一致。2.子类重写父类的方法,这个方法的访问权限不能小于父类方法。3.子类重写父类的方法,抛出的异常不能大于父类抛出的异常。重载:在同一个类中,方法名相同,参数列表不同(包括类型不同,数量不同,顺序不同)。例:public class Washer public void wash()System.out.println(默认洗15分钟);public void wash(int time)System.out.println(洗 + time + 分钟);实参与形参:形参:当你定义一个方法时,这里方法参数类表,均为形参。实参:当你调用这个方法时,为这些方法传入参数时,这些参数叫实参。例:public void show(int num)/这里的int num为形参 show(100);/这里的100为实参隐式重载:public class Father public void driver()System.out.println(开车);public class Son extends Father public void driver(String ticket)System.out.println(开得是 + ticket + 票的车!);多态也叫做“动态绑定”。绑定:绑定是指确定属性和方式归哪个类所有,类型是什么。例如:在Test类中有属性name,有方法getName(),那么当你创建一个Test的对像testObject,那么当调用相应的name属性或getName()方法,这个过程就是一个绑定过程,他把Test中的相互属性和方法绑到了你创建的这个对象上。绑定分为:前期绑定(编译时绑定)和后期绑定(运行时绑定或动态绑定)。判断父类声明子类实例化的秘籍:Java中所有的属性,静态方法全部为前期绑定。你声明什么类型的对象,那么你调用的属性,就是你声明的类所属的属性。调用静态方法,也看是谁声明的,就是谁的静态方法。Java中所有的实例方法(非静态方法)为后期绑定,即动态绑定。调用方法时,真正调用的是new 类型()的方法,真正实例化的对象的方法。软件工程中推荐使用的一种创建对象的形式:父类声明子类实例化。语法:父类 对象 = new 子类();例: Father obj = new Son();一定要看以下程序。public class Father public int age = 30;public void showMe()System.out.println(我是爸爸!);public static void showSex()System.out.println(爸爸是男人);public class Son extends Father public int age = 5;public void showMe()System.out.println(我是儿子!);public static void showSex()System.out.println(儿子是男人);public class TestSon public static void main(String args) /当你在eclipse保存时,也就是编译时,第一行,第三行,就已经绑定了,换句话说,这些值,这些类型就已经确定,这就是为什么叫前期绑定。/由于Java中的实例方法为后期绑定,因此,只有在这个程序运行时,第二行才知道,自己到底调用的是谁的方法。Father obj = new Son();int age = obj.age;/第一行System.out.println(age);obj.showMe();/第二行obj.showSex();/第三行父类声明子类实例化的好处:当调用这个父类声明子类实例化的对象,可以默认向上转型。public class Fruit public void eat()System.out.println(吃水果了);public class Apple extends Fruit Overridepublic void eat() System.out.println(吃苹果);public class Orange extends FruitOverridepublic void eat() System.out.println(吃橘子);public class Banana extends Fruit Overridepublic void eat() System.out.println(吃香蕉);public class Person public void eatFruit(Fruit f)f.eat();public class TestPerson public static void main(String args) Person p = new Person();System.out.println(请输入你最爱吃的水果:);Scanner scanner = new Scanner(System.in);String fruitString = scanner.next();Fruit f = null;if(fruitString.equals(apple)f = new Apple();else if(fruitString.equals(orange)f = new Orange();else if(fruitString.equals(banana)f = new Banana();p.eatFruit(f);19.引包语句:如果你要用到了其他包中的类或接口等。你需要利用import语句引包。import 包名.*;引入该包中所有的类或接口等。但是不会引入其中子包中的类。import 包名.类名; 引入该包中的这个类如果使用了多个包中相同的类,不能利用import语句引包。必须在创建对象时,写出完整的包路径类信息。例:a包中有个类Test,b包中也有个类也叫Test,在我的程序中同时要使用两个包中的Test,必须这么写a.Test test = new a.Test();b.Test test2 = new b.Test();String str = new String();java.lang.String str = new java.lang.String();注意:所有的类,必须引包才能使用,本包中的类除外。java.lang.*除外;20.技术展望:String的比较。(1).对字符串类型的比较,要先判断此字符串是否为null,然后在进行比较,防止字符串为空,调用equals方式是,发生空指针异常现象。例:比较String变量str,是否等于tom,应该如下比较if(str != null & str.equals(“tom”)语句;(2).利用字符串的反写比较方式,被比较的字符串常量,放到前边,利用字符串常量的equals方法反过来比较str变量,这样不会出现空指针异常问题。例:if(“tom”.equals(str)语句;21.this与supper关键字this 代表当前类的对象,也就是,this所在的这个类的对象,有系统创建,属于隐式对象。例:public class ThisDemo private String name; private int age; private String sex; public void setName(String name) = name; /此处如不写this,阅读不便。 public void init() this.show();/代表ThisDemo的对象 this.age = 10; 方法之间的调用过程,内部实现是利用堆栈实现的(后进先出)。注意:this关键字不能与static连用。this 的作用:1.利用this可以直接调用this所在的这个类的属性和方法。2.利用this还可以在本类的构造方法中调用其他的构造方法。调用方式为this(参数),且此语句只能在构造器的第一句出现。不能出现在非构造器中。public class ThisDemo public ThisDemo()this(1);System.out.println(无参构造器);public ThisDemo(int num)this(22);System.out.println(int参数的构造器);public ThisDemo(String num)System.out.println(String参数的构造器);super 关键字:super关键字只能出现在由于继承关系的类中。Java中所有的类均有父类。如果我们写一个类,并没有显示的extends继承一个父类。那么他默认继承Object类。如果一个类Son,继承至父类Father,那么,当你调用子类的构造函数时,默认都会先调用父类的构造,然后在调用子类的构造。例:public class SuperDemo public SuperDemo()System.out.println(父类的构造);public class SonDemo extends SuperDemo public SonDemo()System.out.println(子类的构造);public class TestSuperDemo public static void main(String args) new SonDemo();打印:父类的构造子类的构造注意:子类的构造必须和父类构造一致,否则,必须利用super关键字显示的调用父类构造。例:public class SuperDemo public SuperDemo(int num)System.out.println(父类的构造);public class SonDemo extends SuperDemo public SonDemo()super(10);System.out.println(子类的构造);由于父类的构造SuperDemo(int num),而子类的构造为,SonDemo(),与父类的构造参数不同,因此必须利用super(整形参数),显示调用父类带整数参数的构造。如果父类与子类均有一个无参的构造,那么子类会隐式调用super()方法。例:public class SuperDemo public SuperDemo()System.out.println(父类的构造);public class SonDemo extends SuperDemo public SonDemo()super();/此处可有可无,因为即使不写,也会隐式调用super();System.out.println(子类的构造);注意:super关键字在构造器中使用,只能写在第一行。在构造其中super关键字不能和this关键字一起使用。因为不能同时在第一行。super 的作用:1.显示的调用父类构造,必须写在之类构造器的第一行,如果不写默认调用super();因此如果父类没有无参的构造就会出现编译错误。 2. 在子类中,可以调用父类的某些方法(public,protected)。例:如果父类有一共有或保护型的方法show(),子类重写了这个方法show(),正常我们调用子类的show方法,但是如果程序需要调用父类的show方法,super.show();其调用的就是父类的方法。例:public class SuperDemo public void show()System.out.println(父类的show方法);public class SonDemo extends SuperDemo public void show()System.out.println(子类show方法);public void say()this.show();/调用子类的show方法super.show();/调用父类的show方法题:构造器Constructor是否可被override(重写,覆盖)?构造器Constructor不能被继承,因此不能重写Overriding(重写),但可以被重载Overloading(重载)。22.修饰符static ,finalstatic 关键字:为静态的,被static修饰的东西归类所有。被static修饰的东西,可以直接利用类型来调用。例:public class StaticDemo private static int age = 100;private String name = Jack;public void show()System.out.println(这是普通方法!);public static void staticShow()System.out.println(这是静态方法!);public static void main(String args)System.out.println(StaticDemo.age);/静态属性,直接用类名调用StaticDemo.staticShow();/静态方法,直接用类名调用StaticDemo sd = new StaticDemo();System.out.println();System.out.println(sd.age);sd.show();sd.staticShow();注意:static关键修饰的东西:属性,方法,块,(内部类除外)。被static修饰的方法,不能直接使用非静态属性和非静态方法。(因为静态方法归类所有,加载类时就已存在,而属性归对象所有,类加载时,对象有可能并没有创建,因此不能使用没有创建的对象的属性和方法)。例:public class StaticDemo private static int age = 100;private String name = Jack;public static void main(String args)age = 100;/可以使用,因为age为静态/name = Jack;错误,在静态方法中不能直接使用非静态属性问:为什么main函数用public,static修饰,就能直接使用?答:因为main方法是程序的入口,因为在工程中必须得能找到main方法,所以main方法有public修饰,又因为使用main时,无需实例化,因此这个方法,必须为类所有,所有要有static关键字。注意:被static 关键字修饰的东西为类所属,无需实例化,利用类名直接就可以使用。由于JVM的类加载器加载机制,所以当类被类加载器加载后,类中的所有static修饰的东西,均可以直接利用类名使用。所有static修饰的内容只被加载一次。有new的对象无关,即使new 100次,static修饰的变量也只加载一次,因为他归类所属。final 关键字:被final修饰的东西,均不能改变,为常量。final 能修饰:属性,方法,变量(方法内部的变量),类。例:public final class FinalDemo public final int num = 0;public final String name;public staitic final int PI = 3.14;public FinalDemo()name = Jack;public final void finalShow()public void show(final int num)public void show2()final String ww = 111;说明:被final修饰的类,不能继承。 被final修饰的方法,不能被重写。 被final修饰的属性,不能被改变,即常量,一般与static,public连用。 被final修饰的变量(即方法中定义的变量),在方法执行多过程中不能改变。对被final修饰的属性,只能直接赋值,或在构造器里赋值,如果这个属性即被static修饰又被final修饰,也可以在static块中赋值,如上。被final修饰的属性,必须在创建对象之前赋值。例:public final class FinalDemo public final int num = 0;public final String name;public static final int PI;static PI = 10;public FinalDemo()name = Jack;23.abstract关键字抽象的,可以修饰类,和方法。被abstract修饰的类是抽象类。抽象类:含有抽象方法的类就叫做抽象类。例:public abstract class AbstractDemo public abstract void abstractShow();public void show()System.out.println(有方法体的非抽象方法);特点:类被abstract修饰,被abstract修饰的方法没有方法体。例:public abstract class Fruit public abstract void eat();public class Apple extends Fruit Overridepublic void eat() System.out.println(直接吃);public class Watermelon extends Fruit Overridepublic void eat() System.out.println(切开吃);public class Banana extends Fruit Overridepublic void eat() System.out.println(拨皮吃);抽象方法的作用:当定一个父类时,不同的子类均需要重写否类的某个方法,这样,父类的这个方法并不能确定子类到底实现什么功能,因此,此方法可以写成抽象,让子类重写他。注意:1.如果父类为抽象类,并含有抽象方法,那么子类必须重写这个抽象方法,否则,这个类也必须是抽象类。例:public abstract class AbstractDemo public abstract void abstractShow();public void show()System.out.println(有方法体的非抽象方法);public abstract class AbstractDemo2 extends AbstractDemo / 由于此方法继承至抽象类,但是没有实现其中的抽象方法,因此,此类也必须为抽象类。2.抽象类不一定有抽象方法,但是有抽象方法的一定是抽象类。例:public abstract class AbstractDemo2 3.抽象类中可又有,非抽象方法,也就是实例方法public abstract class AbstractDemo2 public void show()System.out.println(抽象类是可以有实力方法的);抽象类不能实例化,不能用new直接创建。可以利用父类声明,子类实例化的方式创建。public class SonExample extends AbstractDemo Overridepublic void abstractShow() public static void main(String args)AbstractDemo a = new SonExample();4.抽象类不能与new连用,即不能用new创建一个抽象类,只能用他的子类创建。但是抽象类可有自己的构造函数,因为子类继承父类(抽象类),在子类的构造中会默认调用父类的构造,这样父类的构造中,可能完成一定的初始化功能,即使父类为抽象类。例:public abstract class AbstractDemo public AbstractDemo()System.out.println(抽象类初始化);public class Demo7 extends AbstractDemo public Demo7()System.out.println(要创建子类对象了);public static void main(String args) new Demo7();打印:抽象类初始化要创建子类对象了24. Java中的接口:广义上讲:接口就是系统中的一个功能(模块,函数等等)。狭义上讲:接口就是Java中被interface修饰的一个类型。接口:利用interface关键字修饰的类型。接口:接口是一组服务。例:public interface InterfaceDemo 举例说明:Java 可以连Oracle,VB可以连Oracle,C#可以连Oracle,很多语言都能连接Oracle,是这些语言都了解Oracle的内部实现吗?不是!是因为Oracle向外提供了一组服务,如果某们语言相连接Oracle,自己去实现这个服务,这样才能保证不同语言,均可以连接Oracle。在Java中,我们把这种服务叫做接口。注意:1.由于接口只提供了一组服务,子类需要实现它,因此,接口中不能写实例方法。例:这样是错的。public interface InterfaceDemo public void show() 2. 接口中的方法只能用abstract ,public 修饰。默认就是有public abstract,接口中的属性只能用public static final修饰,且默认就是public static final public interface InterfaceDemo double PI = 3.14;void show();这里的void show();默认为:public abstract void show();这里的double PI=3.14;默认为public static final double PI;子类实现接口利用implements关键字:例:public class InterfaceDemo2 implements InterfaceDemoOverridepublic void show() System.out.println(重写父接口中的show方法);3.如果子类实现接口,但是没有重写接口中的方法,那么这个类必须为抽象类。例:public abstract class InterfaceDemo2 implements InterfaceDemo4.Java中接口可以多继承接口,多继承的接口之间利用逗号连接。例:public interface Interface1 public interface Interface2 public interface Interface3 public interface InterfaceSon extends Interface1,Interface2,Interface3 5.类可以多实现接口public class InterfaceClass implements Interface1,Interface2,Interface3public class InterfaceClass extends InterfaceDemo2 implements Interface1,Interface2,Interface3Overridepublic void show() 6.由于接口中方法默认为:public abstract的,如果子类实现这个接口,方法必须也要写成public例:public interface InterfaceDemo int num = 10;void show();public class Demo8 implements InterfaceDemo public void show() /此处的public不能去掉,因为接口中得方法默认为public题:接口与抽象类的区别和联系1.接口是接口,抽象类是类。接口可以多继承接口,类只能单继承类。2.接口中的方法全部为public abstract的,抽象类,不一定有。3.接口中的属性全部是public static final的,抽象类,不一定有。4.抽象类中可有抽象方法,可有实例方法,接口只能有抽象方法。5.接口只能被类实现,不能被类继承。类如果既继承父类,有实现接口,那么必须先继承类,后实现接口。联系:1.接口和抽象类都不能直接实例化,也就是不能用new关键字创建。例:public class SonExample2 implements Interface1 public static void main(String args)Interface1 inter = new SonExample2();2.抽象类和接口都能表示抽象的事物。怎么选择接口或是抽象类,一般定义服务时,均选择接口;如果就是想创建一个类,这个需要被子类实现,这样可以选择抽象类,即抽象类就是被继承。3.如果一个类,继承了抽象类,或实现了接口,那么,他们必须重写其抽象方法,否则,这个类也为抽象类。25.再议方法的形参实参1.Java中方法的参数的传递形式:只有值传递,没有引用传递。在Java的值传递分为:引用值传递(传对象的地址),常量值传递(基本数据类型)2.当Java传递引用值时,在方法内部不会改变对象本身(即对象的地址),但是可以改变对象的状态(即,通过调用对象的属性,方法,改变对象的状态等)。例:public class Example2 public static void changeStr(String str)str = welcome;public static void main(String args) String str=1234;changeStr(str);System.out.println(str);打印1234例:public class Example2 public static void changeStr(StringBuilder str)str = new StringBuilder(welcome);public static void main(String args) StringBuilder str = new StringBuilder(1234);changeStr(str);System.out.println(str);打印1234例:public class Test public static void main(String args) StringBuilder s1=new StringBuilder(jack);StringBuilder s2=new StringBuilder(tom);fun(s1,s2);System.out.println(s1);System.out.println(s2);public static void fun(StringBuilder sb1,StringBuilder sb2)sb1=sb2;sb1.append(sb2);打印:jackto
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 采购成本控制策略制定指南
- 一年级书信给老师的一封信150字7篇范文
- 早期阅读小鸟和大树课件
- 市场推广和联合营销合同书内容
- 人类请高抬贵手700字(12篇)
- 2025年日语J.TESTT级试卷
- 早孕健康知识培训课件
- 2025年三支一扶考试公共基础知识备考与模拟试卷
- 纪委监督检查知识培训课件
- 清华中学数学试卷
- GB/T 45524-2025公共安全易燃易爆气体探测报警装置
- 关联公司转租协议书
- 三级高频词汇必背
- 校园文化建设中心
- 《无人机介绍》课件
- 溃疡性结肠炎的中西医结合治疗策略
- 《ISO 37001-2025 反贿赂管理体系要求及使用指南》专业解读和应用培训指导材料之2:4组织环境(雷泽佳编制-2025A0)
- 《压力容器安装教程》课件
- 住培培训手册填写指导
- 小学生植物知识科普课件
- 美高课程体系介绍
评论
0/150
提交评论