4类和对象.ppt

上传人:hyn****60 文档编号:88372741 上传时间:2023-04-25 格式:PPT 页数:62 大小:408.50KB
返回 下载 相关 举报
4类和对象.ppt_第1页
第1页 / 共62页
4类和对象.ppt_第2页
第2页 / 共62页
点击查看更多>>
资源描述

《4类和对象.ppt》由会员分享,可在线阅读,更多相关《4类和对象.ppt(62页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第四章第四章类和对象类和对象2学习目标:学习目标:理解面向对象思想理解面向对象思想掌握掌握Java类的定义和使用类的定义和使用掌握掌握Java对象的定义和使用对象的定义和使用掌握掌握static关键字关键字了解了解this关键字关键字34.1 面向对象的基本概念面向对象的基本概念对象对象消息消息类类封装封装继承继承多态多态面向对象的基本特征面向对象的基本特征44.1 面向对象的基本概念面向对象的基本概念面向对象的思考方式:面向对象的思考方式:问题中有哪些类和对象问题中有哪些类和对象这些类、对象有哪些属性和方法这些类、对象有哪些属性和方法这些类、对象之间有什么关系这些类、对象之间有什么关系5类是

2、具有共同类是具有共同属性和行为的属性和行为的对象的抽象。对象的抽象。类可以定义为类可以定义为数据和方法的数据和方法的集合集合。类对象抽抽象象实实例例化化封装的实体封装的实体=数据数据+方法方法行为行为属性属性方法方法数据数据4.2 类类6类的定义格式为:类的定义格式为:类类修修饰饰符符class类类名名typevariable1;typevariableN;typemethodname1(parameter-list)/方法体方法体typemethodnameN(parameter-list)/方法体方法体 成员变量(对象属性)成员变量(对象属性)成员方法成员方法(对象行为(对象行为或操作)或

3、操作)类名(自定义类名(自定义的标识符)的标识符)4.2.1 类的定义类的定义7例:例:classCarintcolor;intspeed;voidbrake()voidspeedUp();voidslowDown()计算机中计算机中的对象的原型的对象的原型 现实生活现实生活中的对象中的对象8例:自定义日期类例:自定义日期类包括设定日期、判断该年是否为闰年,输包括设定日期、判断该年是否为闰年,输出日期功能出日期功能public class MyDateint year,month,day;void setDate(int y,int m,int d)year=y;month=m;day=d;b

4、oolean isLeapYear()if(year%400=0|year%4=0&year%100!=0)return true;elsereturn false;public void showDate()System.out.println(year+-+month+-+day);9vstatic(类静态成员变量类静态成员变量)vfinal(声明常量,不能改变其值声明常量,不能改变其值)vvolatile(多线程共享变量多线程共享变量)vpublic、(default)、protected、private4.2.2 成员变量成员变量成员变量成员变量修饰符修饰符=;例如:例如:static

5、intspeed=80;intspeed;作用域:作用域:整个类内有效整个类内有效局部变量:方法内定义的变量,方法内有效局部变量:方法内定义的变量,方法内有效10说明:说明:成员变量的类型可以是成员变量的类型可以是java中任意的数据类中任意的数据类型型在一个类中,成员变量是唯一的在一个类中,成员变量是唯一的成员变量的作用范围:类内有效;成员变量的作用范围:类内有效;局部变量的作用范围:方法内部有效局部变量的作用范围:方法内部有效成员变量可以使用修饰符成员变量可以使用修饰符 局部变量不可以使用修饰符局部变量不可以使用修饰符(除了除了final用来定义常量用来定义常量)4.2.2 成员变量成员变

6、量114.2.3 成员方法成员方法成员方法:成员方法:修修饰饰符符类类型型方法名方法名(参数列表参数列表)/方法体方法体返回类返回类型型public、protected、private、static等等publicvoidchangeSpeed(intnewSpeed)speed=newSpeed;1、方法的定义、方法的定义122、方法的调用、方法的调用4.2.3 成员方法成员方法方法名方法名(参数列表参数列表)-成员方法调用成员方法成员方法调用成员方法类类.方法名方法名(参数列表参数列表)-调用调用static修饰的方法修饰的方法对象对象.方法名方法名(参数列表参数列表)-调用无调用无sta

7、tic修饰的方法修饰的方法134.2.3 成员方法成员方法3、方法调用时参数的传递、方法调用时参数的传递传值调用:方法的参数是传值调用:方法的参数是基本数据类型基本数据类型传引用调用:方法的参数是传引用调用:方法的参数是复合数据类型复合数据类型144.2.4 构造方法构造方法与类名相同与类名相同无返回值类型无返回值类型创建对象时自动调用,不显示调用创建对象时自动调用,不显示调用classRectdoublew,h;publicRect(doublea,doubleb)w=a;h=b;doublecomputeArea()returnw*h;154.2.4 构造方法构造方法说明:说明:一般构造方

8、法的访问权限设置为一般构造方法的访问权限设置为public或或(default),很少定义为,很少定义为private如果在一个类里没有定义构造方法,系统如果在一个类里没有定义构造方法,系统提供一个默认的构造方法。这个默认的构提供一个默认的构造方法。这个默认的构造方法没有形式参数,也没有任何具体语造方法没有形式参数,也没有任何具体语句。句。16应用举例:应用举例:使用类的重载构造方法,生成不同的箱子对象,使用类的重载构造方法,生成不同的箱子对象,计算箱子的体积计算箱子的体积class Boxint width,height,length;public Box(int a)width=a;hei

9、ght=a;length=a;public Box(int a,int b)width=a;length=a;height=b;定义一个定义一个正方体正方体定义一个底为正定义一个底为正方形的立方体方形的立方体17 public Box(int a,int b,int c)width=a;length=b;height=c;public int volume()return width*length*height;public void display()System.out.println(the box volume is:+volume();定义一个长、宽、定义一个长、宽、高不相同的立方体

10、高不相同的立方体18public class ConstructorDemopublic static void main(String args)Box b1=new Box(2);Box b2=new Box(2,3);Box b3=new Box(2,3,4);b1.display();b2.display();b3.display();根据参数不同,调根据参数不同,调用不同的构造方法用不同的构造方法192.对象的创建对象的创建 对象名对象名=new 类名(类名(参数参数););/创建对创建对象象 例:例:r=new Box(2);4.2.5 类的对象类的对象1.对象的声明对象的声明 类

11、名类名 对象名;对象名;/声明对声明对象象 例:例:Rect r;调用构造方法调用构造方法3.使用对象使用对象 对象对象.属性;对象属性;对象.方法();方法();204.2.6 this关键字关键字代表本类对象,可出现在构造方法,实例代表本类对象,可出现在构造方法,实例方法中,不可出现在类方法中。方法中,不可出现在类方法中。使用使用this区分区分成员变量成员变量和和局部变量。局部变量。class ThisDemoint a,b;public ThisDemo(int a)this.a=a;public ThisDemo(int a,int b)this(a);this.b=b;public

12、 int add()return a+b;public void display()System.out.println(a=+a+,b=+b);System.out.println(a+b=+this.add();214.3 修饰符修饰符修饰符(修饰类、成员方法和成员变量)修饰符(修饰类、成员方法和成员变量)访问控制符:访问控制符:private,protected,缺省缺省,public,非访问控制符:非访问控制符:static,final,abstract,syncronized,native,volatile22修饰符修饰符类类成员变量成员变量成员方法成员方法接口接口public(de

13、fault)protectedprivatefinalstaticabstractsynchronizedvolatilenative4.3 修饰符修饰符234.3.1 public若若类类声明为声明为public,表示同一包中的类可自由访表示同一包中的类可自由访问此类,而别的包中的其他类可通过问此类,而别的包中的其他类可通过import引入。引入。q 一个程序文件里最多只能有一个类被修饰为一个程序文件里最多只能有一个类被修饰为publicpublicq 源文件的文件名,必须是用源文件的文件名,必须是用publicpublic修饰的类修饰的类名名q 若程序文件中没有任何若程序文件中没有任何pu

14、blicpublic类,且文件名类,且文件名是程序中的一个类名,则该类被视作是程序中的一个类名,则该类被视作publicpublic24若若成员变量、成员方法成员变量、成员方法声明为声明为public,表示此成表示此成员变量、成员方法可被该类的实例或继承该类的员变量、成员方法可被该类的实例或继承该类的子类访问。其它包的类也可以通过引入共有类,子类访问。其它包的类也可以通过引入共有类,访问共有类中的访问共有类中的public成员。成员。q 一般,成员方法定义为一般,成员方法定义为publicpublic,提供其他程提供其他程序访问的接口序访问的接口q若成员变量声明为若成员变量声明为public,

15、其他类的方法可以其他类的方法可以直接访问它,但这样破坏了封闭性直接访问它,但这样破坏了封闭性4.3.1 public25在访问控制中,友好在访问控制中,友好(default)的访问权限,指的访问权限,指的是在没有任何修饰符的情况下,系统会对变的是在没有任何修饰符的情况下,系统会对变量或方法采用默认的访问权限。量或方法采用默认的访问权限。修饰类:可被同一包中的其它类所存取修饰类:可被同一包中的其它类所存取修饰成员变量、成员方法:被同一包中的其它类所存修饰成员变量、成员方法:被同一包中的其它类所存取取4.3.2 友好的友好的(default)26protected不能不能修饰修饰类类protect

16、ed修饰修饰成员变量成员变量和和成员方法成员方法,表示被该,表示被该类中的方法、同一包中类或被其子类(可在不类中的方法、同一包中类或被其子类(可在不同包)所访问同包)所访问q一般,对于只希望继承其类的子类访问的数一般,对于只希望继承其类的子类访问的数据成员和成员方法我们使用据成员和成员方法我们使用protected修饰。修饰。4.3.3 protected27private不能不能修饰修饰类类private修饰的修饰的成员变量成员变量和和成员方法成员方法只能被同只能被同一类中的其他成员访问一类中的其他成员访问q一般,我们将成员变量定义为一般,我们将成员变量定义为privateprivate,保

17、证保证了其隐藏性。了其隐藏性。q通过通过getXXXgetXXX()()或或setXXXsetXXX()()等修饰为等修饰为publicpublic的的方法,访问、设置属性,提供访问数据成员的方法,访问、设置属性,提供访问数据成员的方法。方法。4.3.4 private28访问控制权限控制小结访问控制权限控制小结访问控制访问控制本类本类同一包同一包中的类中的类其他包其他包中子类中子类其他包其他包中的类中的类public protected (default)友好友好 private 访问权限:访问权限:publicprotecteddefaultprivate294.3.5 staticcla

18、ss People boolean ifwork;int age;static boolean ifwork;区别区别对比项对比项内存内存同类使用同类使用外类使用外类使用类变量类变量永永远远占占一一块块,加加载载时分配,实例共用时分配,实例共用直接用直接用带带类类名名直直接接使使用用,不不必必生成对象生成对象实例变量实例变量一一个个对对象象占占一一块块,创建对象时分配创建对象时分配直接用直接用必必先先生生成成对对象象,然然后后再再使用使用1、类变量与实例变量、类变量与实例变量30class People void work()void conBirthday(int age)static vo

19、id work()区别区别对比项对比项内存内存同类使用同类使用外类使用外类使用类方法类方法永永远远占占一一块块,加加载载时分配,实例共有时分配,实例共有直接用直接用带带类类名名直直接接使使用用,不不必必生成对象生成对象实例方法实例方法创创建建对对象象时时分分配配,所所有有对对象象消消失失才才取取消消实例方法直接用实例方法直接用必必先先生生成成对对象象,然然后后再再使用使用4.3.5 staticNote:l类方法中不能类方法中不能调用实例方法;调用实例方法;l类方法中不能类方法中不能使用实例变量。使用实例变量。2、类方法与实例方法、类方法与实例方法31final修饰修饰类类,表示为,表示为“终

20、极终极”、“最终最终”类,类,别的类不能继承此类。别的类不能继承此类。final修饰修饰成员变量成员变量,表示该成员变量是一个常,表示该成员变量是一个常量,不能被修改。量,不能被修改。final修饰修饰成员方法成员方法,表示该成员方法不能被重,表示该成员方法不能被重写写4.3.6 finalfinal与与public联用,表示只能被访问,不能被继承或重写联用,表示只能被访问,不能被继承或重写。如,如,java.lang.System类即被修饰为类即被修饰为final类类324.4 静态初始化静态初始化静态初始化:一种在类加载时,做一些起静态初始化:一种在类加载时,做一些起始动作的程序块始动作的

21、程序块static/程序块程序块33public class StaticInitDemostatic int x=100;static double y;double z;staticy=3.1415926;StaticInitDemo()z=y*x*x;public static void main(String args)StaticInitDemo s1=new StaticInitDemo();System.out.println(x=+x);System.out.println(y=+y);System.out.println(z=+s1.z);34p静态初始化:静态初始化:不可以

22、设置参数;不可以设置参数;加载到内存时被执行;加载到内存时被执行;不能使用实例变量、实例方法;不能使用实例变量、实例方法;不能使用不能使用this或或superp构造方法:构造方法:可以设置参数;可以设置参数;创建对象时被调用;创建对象时被调用;可以使用类变量、类方法,实例变量、实例方法可以使用类变量、类方法,实例变量、实例方法可以使用可以使用this或或super354.5 内部类内部类Java允许在一个类中声明另一个类,我们允许在一个类中声明另一个类,我们称为内部类或嵌套类,包含内部类的类称称为内部类或嵌套类,包含内部类的类称为外部类。为外部类。内部类可看作是外部类的内部类可看作是外部类的

23、一个特殊的成员一个特殊的成员。内部类编译成独立的内部类编译成独立的.class文件,但前面文件,但前面冠以外部类的类名和冠以外部类的类名和$符号。符号。内部类有四种形式:内部类有四种形式:成员类成员类 静态成员类静态成员类局部类局部类 匿名类匿名类class class 外部类名外部类名 成员变量成员变量 成员方法成员方法 修饰符修饰符 class class 内部类名内部类名 成员变量成员变量 成员方法成员方法 364.5.1 成员类成员类成员类:不用成员类:不用static修饰的内部类,类似于修饰的内部类,类似于实例方法,可访问所在类的所有字段和方实例方法,可访问所在类的所有字段和方法。法

24、。37举例举例1:从外部类的非静态方法中实例化内部类对:从外部类的非静态方法中实例化内部类对象象class MyOuterClassprivate int i=100;public void useInner()MyInnerClass objinner=new MyInnerClass();objinner.seeOuter();class MyInnerClasspublic void seeOuter()System.out.print(i);38举例举例2:从外部类的静态方法中实例化内部类对象:从外部类的静态方法中实例化内部类对象class MyOuterClass_1private

25、int i=100;class MyInnerClasspublic void seeOuter()System.out.print(i);public static void main(String args)MyOuterClass_1 objouter=new MyOuterClass_1();MyOuterClass_1.MyInnerClass objinner=objouter.new MyInnerClass();objinner.seeOuter();MyOuterClass_1.MyInnerClass objinner=new MyOuterClass_1().new My

26、InnerClass();39举例举例3:内部类的:内部类的this引用引用class MyOuterClassclass MyInnerClasspublic void seeOuter()System.out.println(this);System.out.println(MyOuterClass.this);MyOuterClass$MyInnerClassc17164MyOuterClass1fb8ee340说明:说明:内部类可以被内部类可以被final、abstract、public、private、protected、static修饰。修饰。内部类使用内部类使用this指针:指针

27、:this 内部类使用外部类的内部类使用外部类的this指针:指针:外部类外部类.this关于访问类的成员的各种情况:关于访问类的成员的各种情况:内部类的成员访问外部类的成员内部类的成员访问外部类的成员外部类的成员访问内部类的成员外部类的成员访问内部类的成员外部类外访问内部类的成员外部类外访问内部类的成员414.5.2 静态成员类静态成员类静态成员类:用静态成员类:用static修饰的内部类,类似修饰的内部类,类似于类方法,可存取所在类的类字段和类方于类方法,可存取所在类的类字段和类方法。法。42class InnerClassprivate static String nickName=Hu

28、an-huan;private String name;private int age;public InnerClass(String name,int age)this.name=name;this.age=age;public String getName()return name;public void setName(String name)this.name=name;public int getAge()return age;public void setAge(int age)this.age=age;public static class Innerprivate Strin

29、g height=Strong;private String heart=Warm;public String getHeart()return heart;public void setHeart(String h)this.heart=h;43public void print()System.out.println(InnerClass.nickName);System.out.println(getHeart();public class InnerClassTestpublic static void main(String args)InnerClass.Inner inner=n

30、ew InnerClass.Inner();inner.print();inner.setHeart(Simple-simple);inner.print();说明:说明:静态成员类只能访问外部类中的静态成员静态成员类只能访问外部类中的静态成员外部类外部类.内部类内部类 内部类对象内部类对象=new 外部类外部类.内部内部类类();444.5.3 局部类局部类局部类是存在于某一程序区块里的内部类,局部类是存在于某一程序区块里的内部类,类似于局部变量,只能在该区块内被使用。类似于局部变量,只能在该区块内被使用。45class MyOuterClass_3public void doSomethi

31、ng()final int x=10;class MyInnerClasspublic void seeOuter()System.out.println(x);MyInnerClass objin=new MyInnerClass();objin.seeOuter();public static void main(String args)MyOuterClass_3 objout=new MyOuterClass_3();objout.doSomething();举例举例1:局部类的简单示例:局部类的简单示例464.5.4 匿名类匿名类没有名称的局部类没有名称的局部类类体与对象的创建组合在

32、一起类体与对象的创建组合在一起button1.addActionListener(new ActionListener()多用于事件处理,简化事件倾听者及事件处多用于事件处理,简化事件倾听者及事件处理者的声明。理者的声明。47举例:匿名类的应用举例:匿名类的应用brighterButton.addActionListener(new ActionListener()public void actionPerformed(ActionEvent event)setBrighter(););484.6 类的使用类的使用类对象作为类的成员类对象作为类的成员类对象作为方法的参数类对象作为方法的参数方法

33、返回值为类对象方法返回值为类对象494.6 类的使用类的使用类对象作为类的成员类对象作为类的成员class Pointint x,y;public Point(int x,int y)this.x=x;this.y=y;class CirclePoint center;double radius;public Circle(Point p,double r)center=p;radius=r;public Circle(int x,int y,double r)center=new Point(x,y);radius=r;public double area()return Math.PI*r

34、adius*radius;504.6 类的使用类的使用类对象作为方法的参数类对象作为方法的参数对象可直接赋值对象可直接赋值若在方法中改变了实参对象的值,则调用结束若在方法中改变了实参对象的值,则调用结束后实际参数也将发生相应的改变。后实际参数也将发生相应的改变。class Rectangleint width,height;public Rectangle(int w,int h)width=w;height=h;class Circledouble radius;public Circle(double r)radius=r;public class ClassParameterDemopu

35、blic static void main(String args)ClassParameterDemo cp=new ClassParameterDemo();Rectangle r=new Rectangle(10,20);System.out.println(Before:Rectangle width=“+r.width+,height=+r.height);51System.out.println(Rectangle area=+cp.area(r);System.out.println(After:Rectangle width=+r.width+,height=+r.height

36、);Circle c=new Circle(90);System.out.println(Before:Circle radius=“+c.radius);System.out.println(Circle area=+cp.area(c);System.out.println(After:Circle radius=“+c.radius);double area(Circle c)c.radius+=10;return Math.PI*radius*radius;double area(Rectangle r)r.width+=1;r.height+=1;return r.width*r.h

37、eight;Before:Rectangle width=10,height=20Rectangle area=231.0After:Rectangle width=11,height=21Before:Circle radius=90.0Circle area=31415.926535897932After:Circle radius=100.052方法返回值为类对象方法返回值为类对象4.6 类的使用类的使用class Pointint x,y;public Point(int x,int y)this.x=x;this.y=y;Point move(int hx,int hy)Point

38、p=new Point(0,0);p.x+=hx;p.y+=hy;return p;public class ReturnClassDemopublic static void main(String args)Point p1=new Point(0,0);System.out.println(point1:(+p1.x+,+p1.y+);Point p2;p2=p1.move(80,100);System.out.println(point2:(+p2.x+,+p2.y+);53练习练习1编写显示员工编写显示员工ID和员工姓名的程序。使用和员工姓名的程序。使用两个类:第一个类(两个类:第一

39、个类(Employee)包括用来)包括用来设置设置ID和姓名的员工数据的方法;另一个和姓名的员工数据的方法;另一个类类(TestEmployee)创建员工对象,并使用创建员工对象,并使用对象调用方法。创建若干员工并显示他们对象调用方法。创建若干员工并显示他们的数据。的数据。54/Employee.javapublic class Employee private String id,name;public Employee(String id,String name)this.id=id;this.name=name;public String getId()return id;public

40、void setId(String id)this.id=id;public String getName()return name;public void setName(String name)this.name=name;55/TestEmployee.javaimport java.util.Scanner;public class TestEmployee public static void main(String args)Employee emp=new Employee5;Scanner sc=new Scanner(System.in);for(int i=0;iemp.l

41、ength;i+)System.out.println(请输入员工的请输入员工的ID);String id=sc.next();System.out.println(请输入员工的姓名请输入员工的姓名);String name=sc.next();empi=new Employee(id,name);56for(int i=0;i5;i+)System.out.println(“第第”+(i+1)+“名员工信名员工信息息 为:员工姓名:为:员工姓名:+empi.getName()+,员工编号为员工编号为:+empi.getId();57说明说明关于构造方法的说明关于构造方法的说明构造方法和构造方

42、法和set方法的区别方法的区别构造方法和构造方法和set方法都是为成员变量进行赋值方法都是为成员变量进行赋值构造方法是在构造方法是在创建对象创建对象的时候自动调用的时候自动调用set方法是需要通过方法是需要通过对象对象.setXXX()的形式调用的形式调用构造方法是在创建对象时调用,所以构造方法是在创建对象时调用,所以一般一般会为会为全部成员变量全部成员变量设置初值设置初值;set方法方法一般一般会为某个成员变量设置初值会为某个成员变量设置初值如果类内定义了构造方法,则创建对象时,如果类内定义了构造方法,则创建对象时,就需要按照构造方法的参数创建对象就需要按照构造方法的参数创建对象举例:举例:

43、String类的构造方法类的构造方法58说明说明关于关于set/get方法的说明方法的说明set/get方法的作用:方法的作用:因为一般成员变量设置为因为一般成员变量设置为private,为了便于类,为了便于类外对成员变量的访问与设置,在类中定义外对成员变量的访问与设置,在类中定义set/get方法方法set/get方法在类中并不是必须的,根据实际情方法在类中并不是必须的,根据实际情况需要定义况需要定义59说明说明关于文件名和类名的说明关于文件名和类名的说明在一个应用程序中,要有一个在一个应用程序中,要有一个main方法,方法,有有main方法的类必须为共有类。方法的类必须为共有类。一个应用程

44、序中可以有多个类,多个文件一个应用程序中可以有多个类,多个文件一个文件中只能有一个共有类一个文件中只能有一个共有类60说明说明关于对象数组的说明关于对象数组的说明Employee emp=new Employee5;表示表示的是创建一个数组,但此时,数组中的各的是创建一个数组,但此时,数组中的各元素并没有赋值,即元素并没有赋值,即Employee0的内容是的内容是空的。空的。emp0=new Employee();表示为数组元素表示为数组元素emp0赋值,这样,我们才可以调用方法,赋值,这样,我们才可以调用方法,如如emp0.getName()61说明说明关于关于this的说明的说明this表

45、示当前对象的指针。表示当前对象的指针。this指针的作用:指针的作用:构造方法中调用本类的构造方法构造方法中调用本类的构造方法如果参数名和成员变量名一样,区分参数和成员如果参数名和成员变量名一样,区分参数和成员变量变量在集成的开发环境在集成的开发环境(如如Eclipse),当敲入,当敲入this.的的时候,会显示当前类可调用的方法,这样编写代时候,会显示当前类可调用的方法,这样编写代码较方便码较方便62本章小结本章小结掌握面向对象的基本概念掌握面向对象的基本概念掌握类的声明以及成员变量、成员方法的掌握类的声明以及成员变量、成员方法的定义和使用定义和使用掌握各修饰符的特点和作用掌握各修饰符的特点和作用掌握对象的生成和使用掌握对象的生成和使用掌握类的对象的掌握类的对象的3种方法种方法了解内部类的应用了解内部类的应用

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com