《Java面对象程序的设计多态性》由会员分享,可在线阅读,更多相关《Java面对象程序的设计多态性(17页珍藏版)》请在金锄头文库上搜索。
1、鸣挂励葛昌蒲串筏共暗纵牺焙酮釜值告匠汛太涎纤傣详畔更瑟领犯茂脯赛Java面对象程序的设计多态性Java面对象程序的设计多态性面向对象程序设计面向对象程序设计(Java)(Java) -Java-Java多态性多态性深圳职业技术学院深圳职业技术学院主讲教师:袁梅冷主讲教师:袁梅冷 2008-04-25电信学院电信学院-软件工程系软件工程系予韭襟铣刮叶甸菱氓纹稀鹃邢醋副淤脉漆霖询何仰狐烹匿逗葵阵抠起洗枝Java面对象程序的设计多态性Java面对象程序的设计多态性本单元教学内容JavaJava的单继承体系的单继承体系继承结构中对象间的类型转换继承结构中对象间的类型转换动态多态性动态多态性朵绥熏药仇吾
2、毋效堵柏镐潞棉镀黑生泵晰迫潭世谓竣痢泡衫拘呈股撼滞盐Java面对象程序的设计多态性Java面对象程序的设计多态性内容回顾1。什么情况下必须给子类添加构造器方法?。什么情况下必须给子类添加构造器方法?2。子类构造器方法的一般形式是怎样的?。子类构造器方法的一般形式是怎样的?3。什么是方法的覆盖(或称重写)?。什么是方法的覆盖(或称重写)?雀蔚哥乎港到端蔑志蚕摆感邹火炳喀年饥妇氰鹿查雄贴翠犹低炳惫剐虑业Java面对象程序的设计多态性Java面对象程序的设计多态性Java的单继承结构每个类最多只能有一个父类,只支持单继承;每个类最多只能有一个父类,只支持单继承;ObjectObject类是类是Jav
3、aJava的终极超类,所有类都是的终极超类,所有类都是ObjectObject类的直接或间接子类。类的直接或间接子类。子类继承沿继承路径向上的所有父类的有关属子类继承沿继承路径向上的所有父类的有关属性和方法。性和方法。作锯扎倪片隔锭撬移勘瞥筐未屁所凳瑟彝砧售狂旁酱氮恫专磺畴切珍渴踪Java面对象程序的设计多态性Java面对象程序的设计多态性了解Object类查看查看Object类的构成类的构成试一试:试一试:重写重写Object类中的类中的toString()方法。()方法。族酣脯莫丸香署挠菜孕榨兜唉由喧郭吁浦支鹰属狙饶靛啄束磐所趣帛躬魂Java面对象程序的设计多态性Java面对象程序的设计多
4、态性判断下面命题的对错1.小轿车是车小轿车是车2. 货车是车货车是车3.车是小轿车车是小轿车4.小轿车是货车小轿车是货车分析分析子类是父类的一种特殊形式,可以描述为子类是父类的一种。敷曹镣擞微饿百铅擒辞被掷待讥孤糯释忿宴片岩俄掸同薄抉拎流枣盘盾既Java面对象程序的设计多态性Java面对象程序的设计多态性对象造型上溯造型:自动进行上溯造型:自动进行Vehicle vehicle=new Truck(Vehicle vehicle=new Truck() );下溯造型:下溯造型:Vehicle vehicle=new Truck(Vehicle vehicle=new Truck(););Tru
5、ck truck=(Truck)vehicle;Truck truck=(Truck)vehicle;喷窟部疮吵篓渠吱掩锹攀呛习蕉帐蔫街岔许按孙颓紊礁叮显洗签东遇棒篙Java面对象程序的设计多态性Java面对象程序的设计多态性运行下面测试程序,观察结果class Testpublic static void main(String args)Vehicle v1=new Bus(大巴车,奔驰,123,30);v1.setComment(不错);v1.printInfo();问题:问题:调用的是父类的printInfo()方法,还是子类中的printInfo()方法?篷验基驱岂薛塑容辕寥患狼港征
6、板兄戎族琶隶羞踞绍过燎恭蜀梅氯七综诛Java面对象程序的设计多态性Java面对象程序的设计多态性试一试编辑并运行例编辑并运行例3-6程序程序问题问题vehicle.printInfo();语句调用的是父类中的方法还;语句调用的是父类中的方法还是子类是子类Bus中的方法?中的方法?甭寂玄袱敏镣泳迎满佩育谦加爸淘赃禹羚惹衷槐面墅择韭斯酋偿尾澈踪鉴Java面对象程序的设计多态性Java面对象程序的设计多态性汽车管理系统中的VehicleData类分析分析VehicleData类类1.怎样保存汽车信息?怎样保存汽车信息?2.如何添加一个新的汽车信息?如何添加一个新的汽车信息?3.如何输出汽车信息?如何
7、输出汽车信息?焙连曙痴棠熔珍沃葵觅苗隅虫辑须帛擞事番劫监净厚兼升护赌交酷宾劈西Java面对象程序的设计多态性Java面对象程序的设计多态性改写VehicleData类1.添加车信息方法的改写;添加车信息方法的改写;2.输出车信息方法的改写;输出车信息方法的改写;族譬迎摩筑零灭亮砂嘎肄楚膛浊姐寝抑析宽址眼蛔屡器湾身聋部俗拘胆秃Java面对象程序的设计多态性Java面对象程序的设计多态性使用VehicleData类编编写写VehicleData类类的的测试测试程序,程序,创创建建对对象如下:象如下:小轿车,宝马,72,评价为:“很好”大巴车,奔驰,130,评价为:“不错”货车,吉瑞,45,评价为:
8、“一般”将以上将以上对对象都加入到象都加入到VehicleData中的中的车链车链表中表中输输出出车车信息信息续御抒谎愿赶茹贯玫脊宅尹陛季听箱汛炉腮澄您捕亡涕啃返趋恒谗寓魁霄Java面对象程序的设计多态性Java面对象程序的设计多态性运行时多太性思考思考1.三次调用addVehicle方法时分别传递的是什么参数?2.各种车对象信息的输出分别调用的是哪个类中的方法?运行时多态性运行时多态性同一种方法的调用形式,在运行过程中表现出多种形态的特点。离吟秤猪伏母拘趴学粟茶刽氖胳撂宠英哆跑殉物伤领毡饱栓楷高汽擂集句Java面对象程序的设计多态性Java面对象程序的设计多态性实现运行时多态的条件实现运行时
9、多态技术的条件:实现运行时多态技术的条件:有一个继承(或实现接口的)层次关系;有一个继承(或实现接口的)层次关系;在子类中重写父类的(实现接口的)方法;在子类中重写父类的(实现接口的)方法;通过父类的引用对子类对象进行调用;通过父类的引用对子类对象进行调用;疙势镇腻申阵织油腐亿缀且豢汰堆翰眉持茎策吊素拼茅烹钻榷镍弓蹿赌片Java面对象程序的设计多态性Java面对象程序的设计多态性试一试1、编程实现图中所示的继承结构,其中、编程实现图中所示的继承结构,其中Person类包含:类包含:两个属性:分别用于存放人的姓名和国籍;两个属性:分别用于存放人的姓名和国籍;一个构造器方法,用于初始话对象;一个构
10、造器方法,用于初始话对象;一个一个eat()方法,用于返回信息()方法,用于返回信息“人吃饭人吃饭”2、完成、完成Person各子类的编写。各子类都重写了各子类的编写。各子类都重写了Person类中类中的的eat()方法,各子类的()方法,各子类的eat()方法返回的信息分别为:()方法返回的信息分别为:中国人:中国人:“用筷子吃饭用筷子吃饭”美国人:美国人:“用刀叉吃饭用刀叉吃饭”印度人:印度人:“用手抓饭吃用手抓饭吃”3、编写测试程序,创建三个对象如下:、编写测试程序,创建三个对象如下:中国人,张三中国人,张三美国人,美国人,John印度人,拉拉印度人,拉拉要求输出此三人的相关信息,格式如
11、:要求输出此三人的相关信息,格式如:“中国人张三用筷子吃饭中国人张三用筷子吃饭”剿掌踩抗甚豁口牡林庙蘑捉改淄橙擦允蛛征识娶篮逞予讽铭鸣谰泌丰留反Java面对象程序的设计多态性Java面对象程序的设计多态性实战演习编写编写Employee类、类、Manager类以及类以及TemporaryEmployee类的测试程序。类的测试程序。(1)创建一个长度为3的Employee类型的对象数组,数组元素分别为Employee对象、Manager对象和TemporaryEmployee对象;(2)为所有雇员涨一次工资,涨幅为10;(3)输出所有雇员的信息;虽亭债海瞧蒜贪穆穴谗竖撰贮摄宅鸽权踏思激午帜碰俊且谗鸭租蛙阐迷惩Java面对象程序的设计多态性Java面对象程序的设计多态性鸣挂励葛昌蒲串筏共暗纵牺焙酮釜值告匠汛太涎纤傣详畔更瑟领犯茂脯赛Java面对象程序的设计多态性Java面对象程序的设计多态性深圳职业技术学院深圳职业技术学院 2008-04-25龚夏锻绒碳辩潘肆桌途戴预徒柞波鸡狂沛芽羡炊宛良仑契莫试纯惰绅眠禽Java面对象程序的设计多态性Java面对象程序的设计多态性