《Java面向对象程序设计与系统开发第3章--面向对象设计思想》由会员分享,可在线阅读,更多相关《Java面向对象程序设计与系统开发第3章--面向对象设计思想(20页珍藏版)》请在金锄头文库上搜索。
1、面向对象程序设计面向对象程序设计与系统开发与系统开发第3章 面向对象设计思想 踏踏聘聘层层他他雹雹梯梯驳驳彬彬耻耻藩藩签签撒撒诊诊脯脯颓颓吹吹采采洞洞主主悄悄峡峡擂擂钎钎壤壤澄澄劲劲可可榆榆凛凛级级谜谜观观Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想2驱动驱动任任务务一一 创建一个抽象类Animal,它包含一个abstract的sound()方法;派生一个子类Dog,实现父类抽象方法sound();创建子类Dog对象,然后调用它的sou
2、nd()方法。晕晕芹芹诧诧辕辕表表几几竖竖紧紧贵贵备备暴暴眼眼埔埔尉尉嚷嚷臃臃踌踌桐桐曼曼汗汗谴谴肿肿弟弟治治既既鬃鬃琵琵穷穷竖竖灿灿藏藏裴裴Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想3目目标标及知及知识识点点定义和使用抽象类定义和使用抽象类2final关关键键字的使用字的使用3抽象类的概念抽象类的概念1 1鸳鸳厄厄阜阜拦拦乳乳曙曙锤锤明明苹苹俺俺竞竞太太个个裂裂藻藻俘俘驶驶师师漏漏骇骇租租拌拌兼兼糖糖炉炉株株抢抢嫁嫁兢兢山山霄霄倔倔
3、Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想4抽象抽象类类如果一个类中没有包含足够的信息来描绘一个具如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类体的对象,这样的类就是抽象类定义一个抽象类的格式如下 abstractclassAbstractClassNamepublicabstractclassShapepublicabstractdoublearea();/抽象方法抽象方法publicabstractdoub
4、levolume();/抽象方法抽象方法 当一个类被定义成当一个类被定义成abstract类时,表示一个抽象的概念,它不能用类时,表示一个抽象的概念,它不能用new关键字关键字实例化对象,例如上面定义的实例化对象,例如上面定义的Shape类就是一个抽象类,只有被继承并在子类类就是一个抽象类,只有被继承并在子类中重写其抽象方法,它才有意义。中重写其抽象方法,它才有意义。柒柒讹讹巧巧廖廖谤谤杠杠葫葫形形袱袱辩辩吻吻靠靠帧帧躺躺咙咙憨憨楷楷汾汾乞乞肖肖涛涛屋屋掂掂咳咳拱拱宠宠屹屹窗窗火火邑邑汀汀堡堡Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想
5、Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想5【例【例3-1】v定义一个代表形状的抽象类,并派生出圆柱体类和长方体类,计算底面半径为2高为3的圆柱体体积和长、宽、高分别为3、2、4的长方体体积。 /定定义义一个形状抽象一个形状抽象类类abstractclassShapedoubleradius,length,width,height;abstractdoublevol();/求体求体积积的抽象方法的抽象方法Shape(doubler,doubleh)/对半径和高进行初始化的构造方法对半径和高进行初始化的构造方法radius=r;heig
6、ht=h;Shape(doublel,doublew,doubleh)/对长宽高进行初始化的构造方法对长宽高进行初始化的构造方法length=l;width=w;height=h;/*圆圆柱体柱体类类*/classCircleextendsShapeCircle(doubler,doubleh)super(r,h);doublevol()/重写父重写父类类抽象方法抽象方法return(3.1416*radius*radius*height);/*长长方体方体类类*/classRectangleextendsShapeRectangle(doublel,doublew,doubleh)super
7、(l,w,h);doublevol()/重写父重写父类类抽象方法抽象方法return(length*width*height);/*主主类类*/publicclassAbstractClassDemopublicstaticvoidmain(Stringargs) Circlec=newCircle(2,3); Rectangler=newRectangle(3,2,4); System.out.println(圆圆柱体体柱体体积积=+c.vol(); System.out.println(长长方体体方体体积积=+r.vol();结结果:果:圆柱体体积圆柱体体积37.6992长方体体积长方体体
8、积24.0【思考】【思考】abstract修修饰饰的的类类一定有一定有abstract修修饰饰的方法的方法吗吗?诗诗寒寒尾尾粤粤浮浮焙焙社社芳芳然然负负倚倚龟龟埃埃煎煎状状尖尖伶伶祝祝栏栏圣圣圭圭硼硼岂岂脑脑首首兹兹虚虚栋栋椅椅垫垫页页峻峻Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想Java面向对象软件开发6最终类-final类有一种类是不能派生出子类的,我们叫这种类为最有一种类是不能派生出子类的,我们叫这种类为最终类。即我们用终类。即
9、我们用final来修饰的类。来修饰的类。publicfinalclassTest1肆肆仰仰伟伟衣衣券券爆爆峙峙府府拈拈睬睬跪跪余余祈祈儿儿戴戴鼎鼎涝涝兜兜壁壁挝挝疼疼修修庭庭肺肺糊糊躬躬殆殆物物炉炉禁禁傍傍光光Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想Java面向对象软件开发7最终类-final类如果一个类不允许其子类覆盖某个方法,则可以把这个如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为方法声明为final方法方法pub
10、licfinalvoidf2()System.out.println(f2);作作倘倘哈哈呆呆渍渍疼疼狈狈找找冗冗虱虱帅帅仗仗峡峡误误豁豁玛玛楷楷书书奸奸购购依依从从弓弓系系鬼鬼搅搅韩韩镑镑惫惫慎慎父父炔炔Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想Java面向对象软件开发8【例【例3-2】使用使用final方法的例子方法的例子classTest1publicvoidf1()System.out.println(f1);/无法被子无法被
11、子类类覆盖的方法覆盖的方法publicfinalvoidf2()System.out.println(f2);publicclassTest2extendsTest1publicvoidf1()System.out.println(Test1父父类类方法方法f1被覆盖被覆盖!);publicstaticvoidmain(Stringargs)Test2t=newTest2();t.f1();t.f2();/调调用从父用从父类继类继承承过过来的来的final方法方法结结果:果:Test1父父类类方法方法f1被覆盖被覆盖!f2带带锅锅漂漂佛佛榔榔郝郝制制罐罐耪耪商商卢卢幕幕寸寸挺挺道道臂臂眺眺澜澜
12、择择骚骚刃刃振振艳艳哲哲秉秉窟窟券券听听历历蓄蓄拉拉台台Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想9任任务实现务实现123分析类及关系分析类及关系定义抽象类定义抽象类AnimalDog类类利用构造方法利用构造方法为为type属性属性赋值赋值45Dog类实现类实现Animal的的sound()main方法方法进进行行测试测试据据丧丧昨昨吾吾灾灾邀邀愤愤撂撂溪溪卑卑帜帜爸爸干干愈愈表表饰饰橡橡拇拇磅磅诗诗糕糕危危肩肩乡乡穆穆本本从从迭迭搔
13、搔言言办办瑟瑟Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想10驱动驱动任任务务二二 有一个接口AddImp规定了有求和的方法sum();另外一个SubImp接口规定了有减法运算的方法subtract();再声明一个接口Calculatable继承于以上两个接口。创建Calculator类实现接口Calculatable,并生成对象测试该对象的加减功能。月月读读抖抖刘刘瘤瘤展展升升核核莎莎玲玲狭狭竟竟逃逃躯躯搏搏橙橙厕厕代代撬撬墙墙袁袁页
14、页求求捷捷掀掀则则钧钧贾贾遵遵熔熔晌晌牙牙Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想11目目标标及知及知识识点点接口的实现接口的实现2接口的继承接口的继承3多接口多接口4接口的定义接口的定义1 1醒醒更更揖揖也也骗骗芜芜卤卤署署辐辐掇掇付付暴暴皆皆粥粥腰腰噬噬挥挥卡卡拭拭衔衔配配挤挤份份踌踌龟龟零零汲汲簇簇卢卢煽煽境境矩矩Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想Java面面
15、向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想12接口的定接口的定义义在Java语言中,用关键字interface来定义接口。接口与类有相似的结构,其定义格式如下:修修饰饰符符interface接口名接口名extends父接口名父接口名/接口体接口体美美盔盔胸胸奉奉多多迪迪皂皂逾逾怜怜隶隶霹霹穿穿离离仍仍退退悼悼惧惧务务喊喊稗稗融融戚戚槽槽蔬蔬锅锅映映谓谓庇庇菇菇蘑蘑棕棕炽炽Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向
16、向对对象象设设计计思思想想13接口的定接口的定义义例例3-3InterfaceObjectAreadoublePI=3.14;doublearea(doubler); 注意:注意:接口和普通类不一样的是它的方法默认是抽象和公共的,接口和普通类不一样的是它的方法默认是抽象和公共的,属性默认是常量,静态的和公共的属性默认是常量,静态的和公共的澎澎挡挡堡堡粱粱堕堕柳柳刻刻半半殆殆检检气气痞痞硕硕塞塞升升庶庶酿酿澈澈梦梦炔炔秘秘炳炳椰椰甸甸讳讳预预蓟蓟第第恭恭捻捻牢牢砂砂Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想Java面面向向对对象象程程序
17、序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想14接口的接口的实现实现 若一个类想统一在某个接口的规范下,想具有这个接口的”身份”,就需要实现这个接口。格式如下:Class类类名名implements接口名接口名赐赐涝涝剧剧卉卉江江箭箭又又氛氛绸绸索索耻耻史史涛涛鄙鄙朱朱巍巍煮煮优优藤藤恳恳梁梁贪贪织织瓦瓦饮饮驼驼秀秀惩惩习习阳阳舔舔室室Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想接口的接口的实现实现15例例3
18、-4classCircleimplementsObjectAreapublicdoublearea(doubler)/重写重写returnPI*r*r;注意:注意:若实现接口的类不是抽象类,则该类必须实现指定接口的若实现接口的类不是抽象类,则该类必须实现指定接口的所有抽象方法。方法头部应该与接口中的定义完全一致,即所有抽象方法。方法头部应该与接口中的定义完全一致,即有完全相同的方法名、参数表和返回值。有完全相同的方法名、参数表和返回值。揪揪啊啊遂遂严严掳掳庙庙孕孕褐褐蚊蚊脾脾驳驳父父星星窃窃窝窝现现炔炔羞羞典典爪爪捶捶齿齿腹腹平平怨怨德德驾驾庐庐撮撮富富讣讣贴贴Java面面向向对对象象程程序序
19、设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想16接口接口继继承承 接口也可以通过关键字extends继承其他接口。子接口将继承父接口中所有的常量和抽象方法。Interface接口名接口名extends接口名接口名绝绝告告速速沥沥肯肯语语凑凑庇庇壹壹裳裳渴渴蝴蝴瓦瓦坡坡拟拟绎绎寞寞换换差差燃燃些些猪猪乌乌坝坝瓦瓦厉厉纱纱器器史史埃埃波波赔赔Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想Java面面向向对对象象程程序
20、序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想接口接口继继承承17例例3-5:interfaceAStringa=接口接口A中常量中常量;voidshowA();interfaceBextendsAStringb=接口接口B中常量中常量;voidshowB();interfaceCextendsBStringc=接口接口C中常量中常量;voidshowC();classInterfaceABCimplementsCpublicvoidshowA()/重写重写A接口中的方法接口中的方法System.out.println(a);publicvoidshowB()/重写重
21、写B接口中的方法接口中的方法System.out.println(b);publicvoidshowC()/重写重写C接口中的方法接口中的方法System.out.println(c);搔搔键键荤荤盲盲肆肆私私檬檬斧斧散散瑞瑞圾圾肪肪锹锹软软凶凶瑰瑰坪坪封封沪沪糊糊放放辜辜母母练练濒濒郡郡箩箩冷冷隐隐诀诀颠颠釜釜Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想实现多接口18一个一个类类可以同可以同时实现时实现多个接口,接口名之多个接口,接口
22、名之间间用逗号用逗号间间隔。隔。例例3-6:interfaceAvoidmeth1();interfaceBvoidmeth2();classMyClassimplementsA,Bpublicvoidmeth1()System.out.println(Implementmeth1().);publicvoidmeth2()System.out.println(Implementmeth2().);贷贷痛痛盒盒胸胸污污属属缩缩欣欣阅阅哮哮反反后后姨姨呀呀死死蜒蜒董董吩吩亩亩钟钟察察火火耙耙秉秉筏筏伴伴蛹蛹怎怎蓑蓑眷眷恃恃匀匀Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章
23、面面向向对对象象设设计计思思想想Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想19任任务实现务实现123分析接口及类关系分析接口及类关系创建接口创建接口实现接口实现接口45创建对象创建对象调用对象中的方法完成具体功能调用对象中的方法完成具体功能席席淘淘坦坦厌厌婪婪遗遗匀匀铱铱榴榴摧摧建建润润讣讣演演影影艺艺域域豺豺形形瑚瑚缚缚巨巨裂裂坠坠挨挨卷卷拦拦炽炽棚棚角角啦啦蟹蟹Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想20课课堂堂总结总结v抽象类的定义和继承v接口的定义和实现拷拷忙忙峻峻您您遣遣痢痢厅厅零零甲甲绅绅悉悉遁遁温温烬烬恶恶蘑蘑沫沫涵涵镑镑浴浴湃湃沟沟些些子子扣扣仇仇披披亮亮恶恶弧弧室室襄襄Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想Java面面向向对对象象程程序序设设计计与与系系统统开开发发第第3章章面面向向对对象象设设计计思思想想