资源预览内容
第1页 / 共45页
第2页 / 共45页
第3页 / 共45页
第4页 / 共45页
第5页 / 共45页
第6页 / 共45页
第7页 / 共45页
第8页 / 共45页
第9页 / 共45页
第10页 / 共45页
亲,该文档总共45页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
3Sept.2008Confidential类与对象的基本概念类与对象的基本概念1类与对象2对象初始化3方法的使用4类的组织5访问控制6常用工具类7小结掂袁类鼓朴炼噎输醛乓菠能撞呐篙钝牲桅币精监敝惮龋辜智脉转逗洞娥恩类与对象的基本概念类与对象的基本概念3Sept.2008Confidential1类与对象类与对象什么是对象对象是现实世界中存在的事物,“万事万物皆对象”。每个对象是构成现实世界的一个独立的单位,具有自己的静态特征(状态)和动态特征(行为)。程序中对象就是一组变量和相关方法的集合,其中变量表明对象的状态,方法表明对象所具有的行为。例如,人(Person)、顾客(Customer)、银行帐号(Bankaccount)、钟表(Clock)及生日(BirthDate)都可以看成是现实生活中的对象,他们具有的状态及行为如表3-1所示。宽若矩栓蜕概佐鸟莆爹绥朵综予慨胀墨房逆兽若剩藤吹渭舍痰管婶糟索素类与对象的基本概念类与对象的基本概念3Sept.2008Confidential1类与对象类与对象现实世界中的对象现实世界中的对象程序中的类程序中的类我们称现实世界中具有相同静态特征和动态特征的所有对象为“一类对象”,对某类对象进行抽象可以形成类(class)。在抽象的过程中我们会在该类对象的所有静态特征和动态特征中进行取舍,只抽取对我们“有用的”特征并在Java的类中加以描述。classPersonStringname;intage;chargender;voideat()voidsleep()面音尾斤盐诫抄芭培专墓谓诱受样粥法劈投伦蛛叶邮蒲已盯遮车种俺你绑类与对象的基本概念类与对象的基本概念3Sept.2008Confidential1类与对象类与对象什么是类什么是类可以将现实生活中的对象经过抽象,映射为程序中的对象。对象在程序中是通过一种抽象数据类型来描述的,这种抽象数据类型称为类(Class)。类是具有相同数据格式(属性)和相同操作功能(方法)的对象的集合与抽象。 Java程序中类的声明语法形式如下:修饰符 class类名 变量成员声明及初始化; 方法声明及方法体;其中,“”内的内容为可选项。霓叁钎示溉翠烙郎庄尉嚣沃翱庄负哺宵潭阎灶荫行寐惺底嘎蔗醋预赘毕躇类与对象的基本概念类与对象的基本概念3Sept.2008Confidential1类与对象类与对象程序中的类程序中的类程序中程序中的对象的对象程序中的类是对现实世界中一类对象的描述,也是构造程序中对象的模板,对象是类的具体实例。程序中的类就如同建造大楼的设计图纸,程序中的对象(实例)就如同建造出的大楼。使用同一个设计图纸可以建造出很多大楼。例:Student2.java掘允殉巧锅瞒蹈齿恼拜蹭极椰检寝厦误弟聊鳃族储贡吝至挝盟逸祈沏与易类与对象的基本概念类与对象的基本概念3Sept.2008Confidential类与对象类与对象订豆呈腑支式燃俞宿逊蛹咏靶槽絮膊砸耶安蒲帝湃现惫阵暗舟蓑格贺矩讥类与对象的基本概念类与对象的基本概念3Sept.2008Confidential1类与对象类与对象程序中的类程序中的类程序中程序中的对象的对象生成一个对象:类名实例名=new类名(参数列表);并在内存中为此对象分配内存空间,并返回对象的引用(reference,相当于对象的存储地址)。姿咖伶诵晨春瓮氖马锁羽辜瑶寨拯涤嘉谰伏巡秆弟娜村巾嫡耘懂供故醒片类与对象的基本概念类与对象的基本概念3Sept.2008Confidential1类与对象类与对象程序中程序中引用引用( (reference) )每个引用占据32位的内存空间,其值指向对象实际所在的内存中的位置,例如:Dated=newDate();产生一个Date类型的对象(实例),d的值就指向该对象实际所在的内存空间。分趾贝合淄兔藤先哟蝎炎肾己博湍酷铡六吗谁栖乔熟凛检曝烫毁咋珠侗钨类与对象的基本概念类与对象的基本概念3Sept.2008Confidential类与对象类与对象触冷讹证裴频暗寡亚哮须姿惋啄遇酌狱悔夸猛岩并驭蠕惺真宽暇缠捉阎帝类与对象的基本概念类与对象的基本概念3Sept.2008Confidential1类与对象类与对象为什么要使用类?采用简单数据类型表示现实世界中概念的局存在很大的限性。例如:采用int型数据表示一个日期概念,需要使用3个变量:intday,month,year;如果要表示2个人的生日,就要使用6个变量;并且在使用中必须时刻注意三者的联系和约束关系;同时在使用日期概念时要同时对三个变量进行访问。使用类可以把现实问题中的对象映射为程序中的一个整体类瘫剑哲船越臣望沁购撬址爪伏潘桶晒渴兼妥习检歇滔仟揪痴邹赏泛漾尺胯类与对象的基本概念类与对象的基本概念3Sept.2008Confidential1类与对象类与对象学生类(Student)类classStudent/类首部intid;/定义学号Stringname;/定义姓名doublegrade; /定义成绩intage;/定义年龄/类定义结束产生学生对象Studentstu1=newStudent();Studentstu2=newStudent();例:Student1.java骂辖讫庞埋逝限骚搜范挝颗瘩些燎狙渴停妇桓刁硼绝似帘颅旱俘疗封肥长类与对象的基本概念类与对象的基本概念3Sept.2008Confidential1类与对象类与对象类的成员变量声明的格式如下:修饰符修饰符 类型类型 变量变量 = 初始值初始值;说明:修饰符如public、private为访问控制符。public即公有的,也就是它可以被其他任何对象访问。private即私有的,只能被这个类本身访问,在类外不可见。修饰符static指明这是一个类变量(静态成员变量或静态变量)。例:Student1.java、StudentTest1.java曙曰署辙蒙蛋吏解渴橙厂烩项盘宛厕捆留墙裂渴吃莆奔原妻泣素糯蔑煌攒类与对象的基本概念类与对象的基本概念3Sept.2008Confidential1类与对象类与对象在一些情况中程序采用的是直接访问Student类对象成员变量的策略。代码片段如下:s2.grade=90;s2.age=23;从表面上看,程序一切正常。如果有下面的代码片段,很快就会发现这不是一种好的设计方法。s2.grade=-50;/分数为负?s2.age=-5;/年龄为负?显然,学生成绩和年龄为负数是不符常理的。由于用户能直接访问对象的数据,所以无法限制其它应用程序在调用这些变量时,赋予其数值的范围。疚蚊绿川自避租稻细炮蝗呈匡侥汹辊潘阀歪烟蓖漱榨软脖菠占靳烤棕村号类与对象的基本概念类与对象的基本概念3Sept.2008Confidential1类与对象类与对象好的编程习惯一般不允许其它类直接存取或修改一个对象的成员变量。作为一条规则,把成员变量声明成private,把它们对其他对象隐藏起来,通过提供方法访问属性值。语法格式如下:修饰符修饰符 返回类型返回类型 方法名(方法名(参数列表参数列表)方法体方法体例:Student2.java、StudentTest2.java井秤脓仟困琼为睦挂架撇址垂巳说浇负申乍骸曲闰桃芳修抠累寻否粱堪莱类与对象的基本概念类与对象的基本概念3Sept.2008Confidential封装把对象的所有组成部分组合在一起封装把对象的所有组成部分组合在一起私有数据私有数据 方法方法 方法方法数据数据对象对象A对象对象B公有数据公有数据夷词缝红灶蒸减饼蹄镰步曾扩缉焕泻鸦描顿酥湾腰映铡些两痊圃卤蔼帽呢类与对象的基本概念类与对象的基本概念3Sept.2008Confidential1类与对象类与对象方法的调用必须注意方法的返回值publicStringgetName():表示该方法运行结束后会产生一个String类型的对象作为结果返回给调用者使用。publicvoidprintName():表示该方法运行结束后没有任何数据供调用者使用。方法的参数列表publicvoidsetName(StringstuName)表示该方法运行时必须要接受一个String类型的数据。茂傲在夷给臭赵辈肚晒侄拱虹琼蒂炽涡镜章妙绩岳导濒傀砰巷彻燥帛哎观类与对象的基本概念类与对象的基本概念3Sept.2008Confidential1类与对象类与对象练习充实前面的Student类,加入性别、专业、年级、班级等属性,并定义相应的get、set方法;然后定义测试类对各个属性进行赋值、显示等测试。秃窍洛堪咕辟譬抛撑趣焰迂镣醛绳仁湃凳蔗穴旱惊嵌醛金浮拍峻俊昌醇殴类与对象的基本概念类与对象的基本概念3Sept.2008Confidential2对象初始化对象初始化前面的例子,每创建一个Student对象都要调用一系列set方法来初始化类中的实例变量,这实在太繁琐。因此,在创建对象的同时就对对象进行初始化是一种简单而有效的解决方法。Java中有一种特殊的方法叫构造方法(Constructor),即产生对象时需要调用的方法。构造方法的形式如下:public 类名类名(参数列表参数列表) 语句体语句体速伯蜘善庞乌筷俺倚坞馅影伯兵瑞铸拴例短蹈胳隆辱融膀篡佩漏挑踌变镶类与对象的基本概念类与对象的基本概念3Sept.2008Confidential2对象初始化对象初始化说明:(1).构造方法名必须为该类名;(2).可以通过参数表和方法体来给你生成的对象的成员变量赋初值;(3).构造方法没有任何返回值。例:Student3.java、StudentTest3.java顷约劲扒狙驱掉萍攀早屠聋染换纠肝拌里丫哈雁海滴疹届嘿希指晋圣玩堡类与对象的基本概念类与对象的基本概念3Sept.2008Confidential2对象初始化对象初始化默认构造方法(DefaultConstructor)类被定义时如果没有显式地定义一个构造方法,那么编译器会自动创建一个默认构造方法。public Student( )public Student( ) 这使得能够通过使用newStudent()语句产生学生类的对象。但是一旦在类中自定义了构造方法,编译器就不会提供默认的构造方法了。例:Student4.java、StudentTest4.java吉峙落练给裕橙协克罩糙塔习聂刹韩实胎脑聚荆框爹饿涤屎衔轴利羌冈娶类与对象的基本概念类与对象的基本概念3Sept.2008Confidential2对象初始化对象初始化成员初始化publicclassStudentStringschool=“NEUSOFT”;floatjava_point=getJavaPoint();floatc_point=getCPoint();floataverage=getAvergePoint(java_point,c_point);publicstaticfloatgetJavaPoint()publicstaticfloatgetCPoint()例:StudentInit.java孰掘涕阮晨弗割荫柏为凝疾海烧枝理滥咐墙改责诽忽伦虫慧舷泥卤揉触窑类与对象的基本概念类与对象的基本概念3Sept.2008Confidential2对象初始化对象初始化初始化顺序类的变量会在任何方法(包括构造方法)执行之前得到初始化,即被赋予初值,静态变量初始化在实例变量之前。例:OrderOfInit.java掌娠扔衡磕愤旭月痞碌伍镑右移艘跪汁朋惠终仑谷硷亿焊处寝函裤知黍膀类与对象的基本概念类与对象的基本概念3Sept.2008Confidential2对象初始化对象初始化static补充用修饰符static修饰的变量称为类静态变量,也叫做静态变量或者类变量。静态变量是类的变量,不属于任何一个类的具体对象实例。它不保存在某个对象实例的内存空间中,而是保存在类的内存空间的公共存储单元中。也就是说,不论一个类具有多少个对象,静态变量只有一个,任何一个类的对象访问它,取得的都是相同的数值。同样地,任何一个类的对象去修改它,也都是在对同一个内存单元进行操作。静态变量可以通过类名直接访问,也可以通过对象来调用。采用这两种方法取得的结果是相同的。例:StaticTest.java、StaticInit.java到肃饯馋傣捅咆去矢凳啦痪夷米笋淤悄虎党环反粥元入傣寥椭满澳喧畔狗类与对象的基本概念类与对象的基本概念3Sept.2008Confidential2对象初始化对象初始化练习创建一个桌子(Table)类,该类中有桌子名称、重量、桌面宽度、长度和桌子高度属性,以及以下几个方法:(1).构造方法:初始化所有成员变量。(2).area():计算桌面的面积。(3).display():在屏幕上输出所有成员变量的值。(4).changeWeight(intw):改变桌子重量。在测试类的main()方法中实现创建一个桌子对象,计算桌面的面积,改变桌子重量,并在屏幕上输出所有桌子属性的值。碑前钾运瞩翰冠黎毋瞄捞尧岳族坷提奏砷氖醚剥吗己唐证凤八兄恢狐钱曹类与对象的基本概念类与对象的基本概念3Sept.2008Confidential3方法的使用方法的使用Java语言允许方法重载(overloading),为解决这类问题提供了很好的解决方案。方法重载指一个类中有两个或两个以上同名的方法,但参数表不同。在类中,对重要的方法进行重载,这将为用户使用这些方法提供方便。例:Student5.java、StudentTest5.java纷感周嚎果稳阿誊荣下厄室莹鸣沸镇疹舒驳晾像圈似乒役君姐每脏弱稻靛类与对象的基本概念类与对象的基本概念3Sept.2008Confidential3方法的使用方法的使用构造方法的重载方法重载的最主要的作用其实是实现同名的构造方法可以接受不同的参数。例:StudentTest6.java注意:其中Student类中的toString()方法用于输出学生的信息,当把对象引用放在打印语句中时会自动调用对象的toString()方法,如:System.out.println(s1);等效于System.out.println(s1.toString();宾貌钧破端萍嘿严亩仓爹亩娇信纫吠腆伴阅吁丙絮挡簿熏况怪仟抗靴挡陷类与对象的基本概念类与对象的基本概念3Sept.2008Confidential3方法的使用方法的使用练习为之前练习中的类Student与Table添加进多个构造方法,并分别添加toString()方法用于显示对象的属性值。憨瞧迁钱桨谋篡嘲盒莆痘汞击哭硼务侗丧冗丸欧屁睬珠夺屋删名疑崔索认类与对象的基本概念类与对象的基本概念3Sept.2008Confidential3方法的使用方法的使用this关键字this表示调用这个方法的对象的引用;在类的构造方法和实例方法中解决局部变量与实例变量同名的问题;在构造方法中使用this调用另一个构造方法。例:Leaf.Java、Flower.java肋苞驻期坞睁坍丑众灭铂格肃繁屁槽扫伺浚檄蛋茵孔哄蕉台灵兰怜壕夷册类与对象的基本概念类与对象的基本概念3Sept.2008Confidential3方法的使用方法的使用练习定义一个名为Dog的类,具有方法bark(),此方法应根据不同的基本数据类型进行重载,并根据被调用的版本,打印出不同类型的狗吠(baying)、嚎叫(howling)等消息。编写main()方法来测试。改写上题的程序,让两个重载函数都有两个参数(类型不同),但二者顺序恰好相反,然后增加一个方法调用前两个方法,调用第一个不用this,调用第二个使用this,最后在main()方法里调用第三个方法。阐夕喝徐付勤通携津期启概幽则刹已润暴听泄僵肪垛拽阮条收媳纹敷您盯类与对象的基本概念类与对象的基本概念3Sept.2008Confidential3方法的使用方法的使用练习声明一个MathUtil类,提供:方法total(inti):返回1到i的累加和,如果传入的参数为0或负数则返回-1;方法factorial(inti):返回i的阶乘结果,如果传入的参数为负数则返回-1;方法prime(inti),打印1-i之间的所有质数,如果传入的参数为0或负数则返回”输入错误!”。巷党猪掣替哉个孜焰议鼠鼠扑鸽仟盘像拄臭瓶题炉蜡猾眷筛骤析陡裳燃授类与对象的基本概念类与对象的基本概念3Sept.2008Confidential3方法的使用方法的使用方法的递归调用递归是常用的编程技术,其基本思想是“自己调用自己”。数学上最常见的递归问题就是自然数的阶乘。n=1,n!=1;n1,n!=n*(n-1)!;例:Recursion.Java班菠篮蝎膀坷馒钡督怀有抒往箕曝仓腹侄吊怯焕荤痰秤奠粘涌绦傲嘉组湃类与对象的基本概念类与对象的基本概念3Sept.2008Confidential3方法的使用方法的使用练习Fibonacci数列:13世纪意大利著名数学家斐波那契(Fibonacci)在他的著作算盘书中,记载着这样一个有趣的问题:”由一对兔子开始,一年后可以繁殖成多少对兔子?”假设免子的生殖力是这样的:每对兔子每一个月可以生一对兔子,并且兔子在出生两个月后就具有生殖后代的能力。该数列特征如下,如:1;1;2;3;5;8;13;21;34;F1=F2=1;Fn=Fn-1+Fn-2(n=3)编写方法求该数列的第n项的值,n值由参数传入。肥温诈历队产姥虑丢岭陆模偿宛攻倘彬贮盔逗酷采填妮戏拘因掉斟乎局态类与对象的基本概念类与对象的基本概念3Sept.2008Confidential4类的组织类的组织包(package)作用与Windows系统中的文件夹类似,它不具有任何特别的功能,只是用来存放一个或者多个类和接口的空间。使用包可以避免同名类发生冲突,使类的管理更清晰,更有条理。包可以嵌套使用,一个包中可以再有多个包,就像一个文件夹内可以含有多个子文件夹一样。途卉裸螟蚜迢姑毛捞芽魁恶逝辗瓮荤床处慧痕烷躬惭抱睡优佩兼瞪支畏睹类与对象的基本概念类与对象的基本概念3Sept.2008Confidential4类的组织类的组织包(package)定义包:package包名;定义包的语句必须放在源程序有效代码的第一行。使用这个语句就可以创建具有指定名字的包,并且当前程序中的所有类都属于这个包。如果在package语句的包名中含有符号“.”,则代表了目录分隔符。在这种情况下,需要按照包名分割的顺序,依次创建子文件夹中的子文件夹。注意:Javapackage的命名习惯是所有字母全部小写!例如:packagepeople.person.managers;喀膀变撩苯何缩共筐诡满靴绸娇喧文毡诈谁宾柯颐痪灭洱棉炭迫耕喜开篇类与对象的基本概念类与对象的基本概念3Sept.2008Confidential4类的组织类的组织包(package)导入包当需要使用另一个包中的类时,需要先导入该包,导入的形式为:import包名.类名;其中,包名可以使用符号“.”来表明包的层次,如果要从一个包中引入多个类,则可以用符号“*”来代替类名。例如:importjava.awt.*;注意:“*”只能表示本层次包中的所有类,不包括子包中的类。所以必须多次使用import语句导入所有需要的类。例如:importjava.awt.*;importjava.awt.event.*;例:Package.Java捧叛之母欣联程侮课俄陋授尚义撅呕翔雅嘻英枚雅邮借羹絮甄墒棍犹魂札类与对象的基本概念类与对象的基本概念3Sept.2008Confidential4类的组织类的组织使用包的好处程序员能很容易确定同一包的类是相互关联的;程序员能很方便地了解到在哪里可以找到能完成特定功能的类;避免产生类名冲突;比如Java标准类库中的常见包名:java.net:提供与网络编程有关的类和接口;java.io:提供与输入输出编程有关的类和接口;java.lang:提供Java编程语言的基础类。携剂擅扒犬蕉汉筒帆穆避渐磁娥橙豌今擎谍达啄混狼符封槐涸职泄父赴讲类与对象的基本概念类与对象的基本概念3Sept.2008Confidential5访问控制访问控制类的访问控制只有public(公共)及无修饰符(缺省)两种。当使用public修饰符时,表示所有其它的类都可以使用此类;当没有修饰符时,则只有与此类处于同一包中的其它类可以使用此类。例:PackageTest.Java儡忧塔背邹拒接摄覆誓翟陵郧阵悟阮勃筷拈捍狮分犊泄裳保您彬帆幕脖莲类与对象的基本概念类与对象的基本概念3Sept.2008Confidential5访问控制访问控制类成员的访问控制类成员的访问控制符有public,private,protected及无修饰符4种:private(私有的):类中限定为private的成员只能在这个类中被访问,在类外不可见。无修饰符(缺省的):如果没有访问控制符,则该类成员可以被该类所在包中的所有其它类访问。protected(受保护的):用该关键字修饰的类成员可以被同一类、被该类所在包中的所有其它类或其子类(可以不在同一包中)的实例对象访问。public:用public修饰的类成员可以被其他任何类(前提是对类成员所在的类有访问权限)。例:PackageTest.Java苍聘恶肥运苔倔蓉沁垢奄极币乔湖低骚嫩巫撮钾处过媒明伺粘惶顾奋弘恩类与对象的基本概念类与对象的基本概念3Sept.2008Confidential5访问控制访问控制类成员访问控制符与访问能力之间的关系:类型private无修饰符protectedpublic同一类同一包中的子类同一包中的非子类不同包中的子类不同包中的非子类几良君癣仆辗酶应凹月肩攀悉烤客难啦锡拼招赤阉氦座骗塞禹仍她美妊扫类与对象的基本概念类与对象的基本概念3Sept.2008Confidential6常用工具类常用工具类字符串和数字的相互转换数字转换为String:使用String类静态方法String.valueOf()。例如:Strings=String.valueOf(45);String转换为数字:因为用户通过键盘输入的数字的类型为String型,所以非常需要将其转换为数字。有2个静态方法可以将String转换为数字:Integer.parseInt():将String代表的整数型数字转换为int型数值。格式为:Integer.parseInt(Stringstr);Double.parseDouble():将String代表的浮点型数字转换为double型数值。格式为:Double.parseDouble(Stringstr)。例:StrTest2.Java智薪悯庙酒很冤疯财头以少拼蛔藤灾辩灭膏霓呻任讫少墟捍闻盖系秃洒崇类与对象的基本概念类与对象的基本概念3Sept.2008Confidential6常用工具类常用工具类练习统计一个字符串中出现某个字母的次数(注意区分大小写)。String类中的相关方法:length():计算字符串长度,得到一个int型数值;indexOf():在字符串中定位某个子串,并返回位置编号substring():截取字符串中的一部分,并作为一个新字符串返回;equals():比较两个String内容是否完全相同。免前强拍萤颧寨藏轻锡解修浓病侄变蓑醉刻拔肤监席蜜懂锁冬离峪裳河吝类与对象的基本概念类与对象的基本概念3Sept.2008Confidential6常用工具类常用工具类Math类Math类中的许多静态方法与C语言中的函数类似,可以进行求平方根、求幂等复杂数学计算。random():随机产生一个在0,1)区间的double型数值;例如:随机产生一个10到50之间的整数:inti=(int)(Math.random()*(5010+1)+10;pow(doublex,doubley):返回x的y次幂值。x可以是int、long、float和double型,但返回值为double型;sqrt(doublex):返回x的平方根。x可以是int、long、float和double型,但返回值为double型;濒晶冻帆嘶鲜凯遗人秧奴谱脸资盐罐罗甚锨蔓兆贵近犁哺造粟带诫赛稿怀类与对象的基本概念类与对象的基本概念3Sept.2008Confidential6常用工具类常用工具类JOptionPane类有助于方便地弹出要求用户提供值或向其发出通知的标准对话框。showConfirmDialog();showInputDialog();showMessageDialog();述蔷隆衣代盏熙砚涪役拱蚁尘救员毛朗今夺啤逐康摇瑞灌俐蹋轿报巩伤蛮类与对象的基本概念类与对象的基本概念3Sept.2008Confidential6常用工具类常用工具类练习随机产生一个100以内的正整数,用户通过键盘输入所猜的数字,如果猜对,则结束程序;如果猜错,则给出提示继续猜,直到猜对为止。分别使用Scanner和JOptionPane类完成。递熟靴芦捉镇犬疵洒鳞昏迂恋濒律剩唤霜煤邢帅剥午注帮废峨改艇拒白收类与对象的基本概念类与对象的基本概念3Sept.2008Confidential7小结小结本章介绍了Java语言类与对象的基本概念和语法,包括类的声明、类成员的访问,以及对象的初始化。类是对一类对象共同属性和行为的抽象,由数据成员(属性)、方法成员(行为)组成。相关的类组织在一起可以形成包,每一个类都属于某个包,如果未声明包,则该类属于无名包。类成员的访问控制符有public,private,protected及无修饰符。分别标识了不同的访问权限。对象是类的实例,是通过类的构造方法来初始化的。杯宙狞瘸罪饮亦雇隙雷巧竹赔讫衔偷沪殉斑龚摄许桶草暖服尖融冬疙磊姥类与对象的基本概念类与对象的基本概念
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号