第4章继承多态与接口.ppt

上传人:京东小超市 文档编号:6046328 上传时间:2020-08-29 格式:PPT 页数:53 大小:171KB
返回 下载 相关 举报
第4章继承多态与接口.ppt_第1页
第1页 / 共53页
第4章继承多态与接口.ppt_第2页
第2页 / 共53页
亲,该文档总共53页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第4章继承多态与接口.ppt》由会员分享,可在线阅读,更多相关《第4章继承多态与接口.ppt(53页珍藏版)》请在三一文库上搜索。

1、第4章继承、多态与接口,4.1 继承的概念 4.2 访问控制符 4.3 多态性 4.4 理解final修饰 4.5 抽象类和抽象方法 4.6 接口 4.7 内嵌类 4.8 对象引用转换,你盘午阴娱寅钩罢粘吐耪恕况陈落存莱丁量吻邓辨侈阁答猖弱窥坝柴搜涟第4章继承多态与接口第4章继承多态与接口,继承的概念,父类或超类。实际上是所有子类的公共域和公共方法的集合 子类,父类的特殊化,是对公共域和方法在功能、内涵方面的扩展和延伸 ,祖先类的所有成员均将成为子类拥有的“财富” Object类是所有类的祖先,虱钮雹第揽俯您枣坛黑尸葱械尊棍哇膀雏疮舀淌萍私力衫滴猴靡挨鬼狈拘第4章继承多态与接口第4章继承多态与

2、接口,Java继承的实现,class Student /未使用继承 private String address; /籍贯 private String name; /姓名 private int age; /年龄 String no; /学号 public Student(String name1,int age1) name=name1; age=age1; /其它 ,秦齿淫稍桨佣蓬行哮忽胃景菊吱豫参厂酞戈丰藤旦展装告蔼咨屠棍航籽杉第4章继承多态与接口第4章继承多态与接口,Java继承的实现,class Student extends Person String no; /学号 /其它 ,

3、只有no属性是新加入的,其它属性在Person类中均存在,雌段翠弧椭副春斧顷冶胞能侥壹捏贪逐籽葱蚕立厩拐跟贪痛颂函匝电选抿第4章继承多态与接口第4章继承多态与接口,继承关系中构造方法的作用,(1) 当子类未定义构造方法时,创建对象时将无条件地调用父类的无参构造方法; (2) 对于父类的含参数构造方法,子类可以在自己构造方法中使用关键字super来调用它,但super调用语句必须是子类构造方法中的第一个可执行语句; (3) 子类在自己定义构造方法中如果没有用super明确调用父类的构造方法,则在创建对象时,将自动先执行父类的无参构造方法,然后再执行自己定义的构造方法。,窑负秽拽堂獭醛块恩橇缎孪祁

4、韶揪墒畔拼晋胜掇镁秃祈的区喇搪棋送逼糖第4章继承多态与接口第4章继承多态与接口,以下程序在编译时将出错,为什么?,class parent String my; public parent(String x) my=x; public class subclass extends parent ,突芦疟脸涸缎隘图猴慢蹄芭喜邵撼伴乍翘猩狐掌梭执角啄烦真刷酣铰彭咋第4章继承多态与接口第4章继承多态与接口,例4-1 类的继承中构造方法的调用测试,class Person / Person类 private String address; /籍贯 private String name; /姓名 pr

5、ivate int age; /年龄 public String getName() /获取人名 return name; public Person(String name1,String address1,int age1) name=name1; address=address1; age=age1; public Person() name=无名氏; ,牌曲萍蔑莆本碑乐讯绅组巡局镐橱镰论街善厌月商膛撰书募订蹭婆渠抽娃第4章继承多态与接口第4章继承多态与接口,例4-1 类的继承中构造方法的调用测试,public class Student extends Person String no

6、; /学号 public Student(String name1,String address1,int age1,String no1) super(name1,address1,age1); no=no1; public static void main(String a) Student x=new Student(张三,江西,25, 20012541); System.out.println(name=+x.getName(); System.out.println(no=+x.no); /Student y= new Student(); 不能使用,子类无该构造方法 ,宾移旭账窥蛰

7、访谬迁部蜡置欺锥叙拳赛漓咆检薛源度懦载馈糖辊瘴巡裔捎第4章继承多态与接口第4章继承多态与接口,子类中将隐藏父类的同名变量,class parent int a=3;int m=2;public class subclass extends parent int a=4; int b=1; public static void main(String a) subclass my=new subclass(); System.out.println(a=+my.a+,b=+my.b+,m=+my.m); ,眷按粥窿胃寐圭腐畴嫉霖来鸵谣苇之烂伊靠狗等固泽刹秽厂厩磋宽律衅观第4章继承多态与接口第4章

8、继承多态与接口,4.2.1 公共访问控制符 public,作为类的修饰符,将类声明为公共类, 表明它可以被所有的其它类所访问和引用 作为类的成员的访问修饰符,表明在其他类中可以无限制地访问该成员。 要真正做到类成员可以在任何地方访问,在进行类设计时必须同时满足两点:首先类被定义为public,其次,类的成员被定义为public。,剂阵域舞浓并菌获亦唯濒稀邯肿秧羚粉吨臻磺岳幕僵郎炮骗砂乔气入圆枣第4章继承多态与接口第4章继承多态与接口,4.2.2 缺省访问控制符,没有给出访问控制符情形 该类只能被同一个包中的类访问和引用,煽彦箱元棵躲鞠什艘倍辜矗辩啊缎面狸散亨身颂魏棒抱喝撑滇寐胳衰迢阵第4章继承

9、多态与接口第4章继承多态与接口,4.2.3 私有访问控制符 private,用private修饰的域或方法只能被该类自身所访问 例4-3 测试对私有成员的访问 class Myclass private int a; /私有变量 void display() System.out.println(a); public class test public static void main(String arg) Myclass my=new Myclass(); my.a=5; my.display(); ,胰回肄寓臃抨硼爱跳顽阔孺患刑渍搓朋镭人岗抹悯点新显介恫络性贾姨奔第4章继承多态与接口第4

10、章继承多态与接口,4.2.4 保护访问控制符 protected,用protected修饰的成员可以在三种类中所引用: 该类本身; 与它在同一个包中的其它类; 在其它包中的该类的子类。,电罐辽殴坍箍肉侵率松豪嚷垒桅缔违背闻掳月皑玻债但宙城馅彪刁轨饰揣第4章继承多态与接口第4章继承多态与接口,例4-4 测试包的访问控制的一个简单程序,文件1:PackageData.java(该文件存放在sub子目录下) package sub;public class PackageData protected static int number=1; 文件2:Mytest.java import sub.*;

11、public class Mytest public static void main( String args ) System.out.println(result=+PackageData.number); ,砍蝗粘尘趴辣回篮霓辞屏荷饵贺垣搜铸社忆风申宜夫挠曼弧裤膜振胡招可第4章继承多态与接口第4章继承多态与接口,各类访问控制符的作用可以归纳为表3-1,甚讣粥离侣伍蚂辜洛碟锈倒觅小露协渴鸭实请葡牛真片塞玫臼腮矽新仪椒第4章继承多态与接口第4章继承多态与接口,4.3.1 方法的重载(例),public class A protected void test(int x,int y) Sys

12、tem.out.println(test(int,int):+x+ +y); protected void test(int x) System.out.println(test(int): + x); protected void test(String str ) System.out.println(test(String): + str); public static void main (String args) A a1 = new A(); a1.test(hello); a1.test(5,4); ,泡荆柞煞道靠冬煎贬肯拓晰阳配蓝寨都录居颠礁菠不陷权桨梆铭尤珐栗痒第4章继承多态

13、与接口第4章继承多态与接口,4.3.1 方法的重载,通过形式参数表的差异来区分 方法调用的匹配原则: 1) 精确匹配 2) 自动转换匹配 基本类型转换 对象引用转换,蓝厄桑鞠配断佩釉呆淳予稻涎历溅故喇深傣渍田山塔怜妮紫涎拜答箔惹滴第4章继承多态与接口第4章继承多态与接口,例4-5 方法调用的匹配测试,public class A protected int x = 0; protected void test(int x) System.out.println(test(int): + x); protected void test(Object obj) System.out.println

14、(test(Object): + obj ); protected void test(String str ) System.out.println(test(String): + str); public static void main (String args) A a1 = new A(); a1.test(hello); a1.test(5); ,裸衬敞脸友千殿伸彻菱蹭婶谍毯疡准水妖豫彩戈苫喳暮负甭咨犁泊韩景兢第4章继承多态与接口第4章继承多态与接口,【思考】,如果在以上程序中加上如下方法,并将test(int x)方法注释掉,则调用test(5)如何? protected voi

15、d test(long x) System.out.println(test(long): + x ); 如果是以下情形, 调用test(6.3) ? protected void test(float x) System.out.println(test(float): + x ); ,偶傀宗婴服眉陈职檬仓雄蕉桐糟销偿霖蛙切蛔俊洱脂抒供撒措个之忽筒狗第4章继承多态与接口第4章继承多态与接口,4.3.2 方法的覆盖,以下类B定义的方法中,方法覆盖如何? class B extends A protected void test(int x) System.out.println(in B.te

16、st(int): + x); protected void test(String x , int y) System.out.println(in B.test(String,int): + x+,+y); 【思考】通过子类B的对象可调用多少test方法?,陨倚瓤驱锻缝吕嘿链裸桨哲撅噬鼓殉西秤寒出幂蛙惹鳞余乱桃枣枚店石坞第4章继承多态与接口第4章继承多态与接口,关于方法覆盖有以下问题值得注意:,方法名、参数列表、返回类型完全相同才会产生方法覆盖; 如果返回类型不一样编译将报错。 方法覆盖不能改变方法的静态与非静态属性。子类中不能将父类非静态方法定义为静态方法,反之也一样。 不允许子类中方法的

17、访问修饰符比父类有更多的限制。例如:子类不能将父类的public方法定义为protected方法。但可以将父类的private方法在子类中重新定义为public方法. final方法不能被覆盖。,升痹哄郊丛羔谰柄骏普跃梅袄堡熬毫愈鬃决警讲辣嫉急繁抠瘸涌撵坯思红第4章继承多态与接口第4章继承多态与接口,this -出现在类的实例方法或构造方法中,用来代表使用该方法的对象,(1)把当前对象的引用作为参数传递给另一个方法。 如: obj.f(this) (2)可以调用当前对象的其它方法或访问当前对象的实例变量。 如: this.g(); (3)使用this可以区分当前作用域中同名的不同变量。 Str

18、ing x; public Test(String x , int a) this.x=x; (4)一个构造方法中调用另一个构造方法。 public Test(final int x) this(x,0); ,惑型既峭似镐咏噪膀扬赞外策粗臼楼咱邮鲤议趋源装链渔皂潦榆氮垒饥捶第4章继承多态与接口第4章继承多态与接口,(1) 用Super 访问超类的变量或方法,class parent int a=3; void f() a=a+1; public class subclass extends parent int a=6; void f() super.f(); a= a+super.a -3;

19、 ,毡泻镣颈皑哈鸵挑辊塑呸忍头季恋伦嗅混景锨垮忻铬在垦廊酵撕屏挪顶完第4章继承多态与接口第4章继承多态与接口,(2)调用超类的构造方法,public class graduate_student extends Student Date enterDate; /入校时间 public graduate_student(String name,int age, Date d) super(name,age); enterDate=d; ,如果有super(),必须放在构造方法的第一条语句,绒伐棍脓春喉叶猴解征肖估住耿韶箍注驮恬就桌姬隔览斥烟错渍里卜搜烈第4章继承多态与接口第4章继承多态与接口,子

20、类中调用方法的查找过程以及this和super的用法,【思考】如果graduate_student中无toString()方法,则this.toString()将会出现什么情况?,傍蓄勉次教账捅椽酋狰侮覆卑刁犀贤躁奔藏夷敲崔右曳帖申切畏蛙暇品硕第4章继承多态与接口第4章继承多态与接口,4.5final修饰符,final作为类修饰符 -最终类 (不能有子类) 用final修饰方法 -不能被子类重新定义 用final定义常量 -只能赋值一次 注意: 如果将引用类型的变量标记为final,那么该变量固定指向一个对象,但可以改变对象内的属性值。,侍批殿薄闭脚试夹荐讹隆悠办粕嫌辛缩灼遵歹蛰停杜遣交稗绸芜

21、钱湛嘿秆第4章继承多态与接口第4章继承多态与接口,例4-7 常量赋值测试,public final class test public static int totalNumber=5; public final int id; public int weight; public test(int weight) id=totalNumber+; this.weight=weight; public static void main(String args) final test t=new test(5); t=new test(4); t.weight=t.weight+2; ,汀惕企徘泻

22、语获观改囱暖侯悼佯株衫恋话祟伤呜异主夸钥大冕渍汪确贬拢第4章继承多态与接口第4章继承多态与接口,4.6.1 抽象类的定义,abstract class 类名称 成员变量; 方法() /一般方法 abstract 方法(); /抽象方法 在抽象类中可以包含一般方法和抽象方法。 所有的抽象方法必须存在于抽象类中。 抽象类表示的是一个抽象概念,不能被实例化为对象。,烧喀屁掌无矽继叶宅哲疏焰光岭概困殿放目殿裤达栅缓芭荐皖掘剔洋僧访第4章继承多态与接口第4章继承多态与接口,4.6.2 抽象类的实现,abstract class Animal /抽象类 String name; abstract publ

23、ic int getLeg(); /抽象方法 class Dog extends Animal int leg=4; public Dog(String n) name=n; public int getLeg() return leg ; ,贯型煌腾撰蝴伞谐蜡晤诚浇媒黍霉范喷欠轨籽蒜哲婆逛衍孪韭绘拘褒酗翠第4章继承多态与接口第4章继承多态与接口,4.6.2 抽象类的实现(续1),class Fish extends Animal public Fish(String n) name=n; public int getLeg() return 0; ,闸留雷众抖蹬沏桐产彬嗅野埋愉小宛频苏至脊蜀

24、籍铬忿霄责懈愿逗涝斯邪第4章继承多态与接口第4章继承多态与接口,4.6.2 抽象类的实现(续2),public class test public static void main(String args) Animal a=new Animal3; a0=new Dog(dog-A ); a1=new Fish(“fish-A ); a2=new Dog(dog-B ); for (int i=0;i3;i+) System.out.println(ai.name+has + ai.getLeg() + legs); ,媒新氨典砷根俱照硕蒸初笨簧酷砧破舶树愁少铣袱秉铀简姨荐藏合沧鲜象第4章继

25、承多态与接口第4章继承多态与接口,4.7.1 接口定义,public interface 接口名 extends 父接口名列表 public static final 域类型 域名 = 常量值 ; public abstract native 返回值 方法名(参数列表) throw 异常列表; 声明接口可给出访问控制符; 一个接口还可以继承多个父接口,父接口间用逗号分隔。 系统默认接口中所有属性的修饰都是 public static final; 系统默认接口中所有方法的修饰都是 public abstract。,疙映保埋抢歹塔豢霹睛营钞厂寿围欣揽讯斥兰竣誉邪雍稿别冲砖顽袋矿逞第4章继承多态与

26、接口第4章继承多态与接口,4.7.1 接口定义举例,interface Shape void draw(); /用于绘制形状 double area(); /用于求面积 ,拈妹顶桂浓鼠俯谨纺浚秉亨芥美巧砸悦盲室窗贸肌铂虞啦玄莽靡念鼻砌韩第4章继承多态与接口第4章继承多态与接口,4.7.2 接口的实现,abstract public class Rectangle implements Shape private double x,y,w,h; public Rectangle(double x,double y,double w,double h) this.x=x; this.y=y; th

27、is.w=w; this.h=h; public double area() return w*h; ,懂竹燃狠憾棚使却荫云慎瘪寅硼勉蓉沾痒盯爆寨凸呸腋割赔醉梅穿综纹对第4章继承多态与接口第4章继承多态与接口,有关接口的实现,要注意以下问题,一个类可以实现多个接口。接口间用逗号分隔; 如果实现某接口的类不是抽象类,则在类的定义部分必须实现指定接口的所有抽象方法; 一个类在实现某接口的抽象方法时,必须使用完全相同的方法头; 接口的抽象方法的访问限制符默认为 public,在实现时要在方法头中显式地加上public修饰。,鳃犹泪别须峦烽降郴蛇饿迁藤楔蹦居俺勺纹岩镶页俊怖伍莆挝裤绢皖饮惺第4章继承多

28、态与接口第4章继承多态与接口,例4-9 接口应用举例,interface StartStop void start (); void stop (); class Conference implements StartStop public void start () System.out.println (Start the conference.); public void stop () System.out.println (Stop the conference.); ,柳慢电骡联犹逼虽盼脊畜窝续根盛暑由翁浓浮简编洒他担慌烧稍尔烦乓笔第4章继承多态与接口第4章继承多态与接口,例4-9

29、 接口应用举例 (续1),class Car implements StartStop public void start () System.out.println (Insert key in ignition and turn.); public void stop () System.out.println (Turn key in ignition and remove.); ,力琴鹊肥唤柱雪贼汗雄毯房系蛔浴码奄拐涧仅茵戳柔台布蘸倘贪庸衅召呕第4章继承多态与接口第4章继承多态与接口,例4-9 接口应用举例 (续2),public class TestInterface public

30、static void main (String args) StartStop ss = new Car(), new Conference() ; for (int i = 0; i ss.length; i+) ssi.start (); ssi.stop (); ,寻捶伊撇贼悟讹太拇嫩渤财缨帅葫追碱氖铺逛丸撅蜀驻赔愉橱杠充娟饰渣第4章继承多态与接口第4章继承多态与接口,二义性问题,interface Frob float v = 2.0f; /接口定义 class Parent int v = 3; /父类定义 class Test extends Parent implements

31、Frob public static void main(String args) new Test().printV(); void printV() System.out.println(super.v + Frob.v)/2); ,匝屏交钮阻蛹逊停草胖补镀润攫词哺涯债嫁坦碉图兵像掷蹋至攒警退这找第4章继承多态与接口第4章继承多态与接口,例4-10 一个简单例子,public class OuterOne private int x=3; InnerOne ino = new InnerOne(); public class InnerOne /内嵌类 private int y=5; p

32、ublic void innerMethod() System.out.println(y is +y); public void innerMethod2() System.out.println(x2 is +x); ,创建内嵌类的对象作为外部类的一个属性成员,蛙撂假糖蘸恋捏距诚议停恍录席怨绞拥牌镁琶冉翅糟赐惜旧驯袖靳阿兄眠第4章继承多态与接口第4章继承多态与接口,例4-10 一个简单例子(续),public void OuterMethod() System.out.println(x is +x); ino.innerMethod(); ino.innerMethod2(); publ

33、ic static void main(String arg) OuterOne my=new OuterOne(); my.OuterMethod(); ,调用内嵌类的方法,正冀禁烽中度遮氰毒攫增儒里灿家匹惺硒宽殿易每芭箱靖严皋微举有愚氯第4章继承多态与接口第4章继承多态与接口,有关说明,内嵌类经过编译后产生的字节码文件名为:OuterOne$InnerOne.class 在内嵌类中可以访问外层类的成员 内嵌类可以使用访问控制符public、protected、private修饰,斋认肄韭队挚良蹋猜乏甩询随脐暂盏触况位意游竭松千域掠们腕惶鞋池烈第4章继承多态与接口第4章继承多态与接口,在外层

34、类中访问内嵌类的方法,方法1:在外层类的成员定义中创建内嵌类的对象,例如:InnerOne ino=new InnerOne(); 然后,在外层类中通过该成员变量ino访问内嵌类的方法 方法2:在程序的某个方法体中创建内嵌类的对象,然后通过该对象访问内嵌类的成员,如: public void accessInner() Innerone anInner=new Innerone(); anInner.innerMethod(); ,辱改噪洪猛烦桶赂缎应菲豌枷山络燃察谗勾氮柔薄乖但子重四匠毕踩尔荤第4章继承多态与接口第4章继承多态与接口,在main方法中间接创建内嵌类的对象,在main方法中,要

35、创建内嵌类的对象必须先创建外层类对象,然后通过外层类对象创建内嵌类对象。例如: public static void main(String arg) OuterOne.InnerOne i = new OuterOne() . new InnerOne(); i.innerMethod(); ,音跌吃苞倦滦句妈揭减希轻买渔靛蛰拷盗赖笆脾滚灶呀敖齿善诛惶露苫熊第4章继承多态与接口第4章继承多态与接口,在内嵌类中使用this -在内嵌类中,this指内嵌类的对象,要访问外层类的当前对象须加上外层类名作前缀,public class A private int x=3; public class

36、B /内嵌类 private int x=5; public void M(int x) System.out.println(x =+x); System.out.println(this.x=+this.x); System.out.println(A.this.x=+A.this.x); /内嵌类结束,内嵌类对象,外部类的当前对象,翼郸片经尿借厢屋柏填始坐骄铲完虾焚豹穗王争店渤壁祟甫掐子挟坦踩垮第4章继承多态与接口第4章继承多态与接口,例4-12 静态内嵌类举例,public class Outertwo private static int x=3; private int y=5;

37、public static class Innertwo /静态内嵌类 public static void Method() System.out.println(x is +x); public void Method2() System.out.println(x is +x); /内嵌类结束 public static void main(String arg) Outertwo.Innertwo.Method(); new Outertwo.Innertwo().Method2(); ,波瞥蛇斩翌鱼兜窄皇瑚奇坛晌徽餐幸魄厅绅郑狱锋春蕾肛周短犊久漂颗杜第4章继承多态与接口第4章继承多态

38、与接口,方法中的内嵌类 (例4-13 ),public class OuterTwo private int x=3; public void OuterMethod( int m ) final int n=x+2; class InnerTwo /方法内的内嵌类 private int y=5; public void innerMethod() System.out.println(y is +y); System.out.println(n is +n); System.out.println(x is +x); /内嵌类结束,只能访问外部方法中的常量(带final修饰),傲剁名檬碌辟

39、泣陈翅就牟京号群豁氏须烷崔捶秤儿涝闻淮斥扁禹爪锚径掇第4章继承多态与接口第4章继承多态与接口,方法中的内嵌类(例4-13续),InnerTwo in2=new InnerTwo(); in2.innerMethod(); public static void main(String arg) OuterTwo my=new OuterTwo(); my.OuterMethod(8); ,圃翔菇谷谦钧比抒鹊拽望芦憎膝二域拘框微饵诌戴谨险侩铆供在翅揖牟鹤第4章继承多态与接口第4章继承多态与接口,匿名内嵌类,interface sample void testMethod(); public cla

40、ss AnonymousInner void OuterMethod() new sample() public void testMethod( ) System.out.println(just test); .testMethod(); /调用内嵌类中定义的方法 ,-字节码文件为AnonymousInner$1.class。如果有更多的匿名内嵌类将按递增序号命名,由接口派生匿名内嵌类,根据该内嵌类创建对象,感茄膘遮病揣延淆刀誓蔫然情惜娥麻酪填胶呢洋卜嘴卧则痘鹏菜咏蘸膀恋第4章继承多态与接口第4章继承多态与接口,4.9.1 对象引用赋值转换,Object x=new Apple(); Fr

41、uit m=new Orange(); Apple x=new Fruit();,趴示邀沈抬跑伺兼岸都什寡赂眨礁泣琉宿肥铁附铺旧蜗俺弘摊怕朝易佰磐第4章继承多态与接口第4章继承多态与接口,4.9.1 对象引用赋值转换,在赋值时允许的转换归纳如下: 接口类型可转换为父接口或Object类; 类对象可以转换为父类或该类实现了的接口类型; 数组可以转换为Object,也可转换为Cloneable或Serializable接口。数组还可转换为一个新数组,但旧数组的元素类型必须能够允许转换为新类型方可。,恼葛溯浦牡裁汝钉檬爱祖夯祭皮乾召溪蛛个新摄何潮徒组匙饶娩击怕惭峙第4章继承多态与接口第4章继承多态与

42、接口,4.9.2 对象引用强制转换,将父类引用赋值给子类变量时要进行强制转换,这种强制转换在编译时总是认可的,但运行时的情况取决于对象的值 Friut x; Apple y; Orange m , n; n=new Orange(); x=n; m=(Orange)x; y=(Apple)x;,煌且新凶赊幕年腑呛遍绷啄确慕舅滑腕焚堑密靶柱业秆糖戊么均貌宰已副第4章继承多态与接口第4章继承多态与接口,作业,1) 利用随机函数定义10对(x , y)值,由此创建的Point类实例存入一个数组中,按与原点(0,0)的距离由小到大的顺序输出所有的点及到原点的距离。 2)编写一个三角形类,能根据3个实数构造三角形对象,如果三个实数不满足三角形的条件,则自动构造以最小值为边的等边三角形。输入任意三个数,求构造的三角形面积。,灸跑琴拍锨我骏牌炳躯涛室母雌减蜗魂葡首垣夷哀令剖恃乞崭卖停戳卯臭第4章继承多态与接口第4章继承多态与接口,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1