Java_语言与面向对象程序设计(第二版)课件第五章.ppt

Java_语言与面向对象程序设计(第二版)课件第五章.ppt

ID:55596794

大小:381.00 KB

页数:42页

时间:2020-05-20

Java_语言与面向对象程序设计(第二版)课件第五章.ppt_第1页
Java_语言与面向对象程序设计(第二版)课件第五章.ppt_第2页
Java_语言与面向对象程序设计(第二版)课件第五章.ppt_第3页
Java_语言与面向对象程序设计(第二版)课件第五章.ppt_第4页
Java_语言与面向对象程序设计(第二版)课件第五章.ppt_第5页
资源描述:

《Java_语言与面向对象程序设计(第二版)课件第五章.ppt》由会员上传分享,免费在线阅读,更多相关内容在PPT专区-天天文库

1、第5章继承与多态主要内容:继承多态接口和包继承继承:子类利用父类中定义的方法和变量就像它们属于子类本身一样;(包括父类的私有属性、私有方法,但不可见);单重继承:一个类只能有一个父类(Java、C#、VC++);多重继承:一个类可以有多个父类(标准C++);电话卡域:剩余金额方法:拨打电话查询金额无卡号电话卡域:电话机型号方法:获得电话机型号有卡号电话卡域:卡号,密码,接入号码,接通方法:登录交换机IP卡域:有效时间方法:拨打电话200卡域:附加费用方法:拨打电话修改密码电话IC卡方法:拨打电话电话磁卡域:使用地

2、域方法:拨打电话继承继承继承继承继承继承图5-1各种电话卡类及其间继承关系继承的优点、目的优点:更有效地组织程序结构,明确类间关系;目的:使程序结构清晰,提高开发效率,降低编码和维护工作量。派生子类《例5-1》PhoneCard类及其派生子类abstractclassPhoneCardabstractclassNone_Number_PhoneCardextendsPnoneCardabstractclassNumber_PhoneCardextendsPnoneCard问题:第二行、第三行的类为什么是抽象类,能

3、否去掉abstract关键字?域的继承子类继承(拥用)父类的所有非私有(P91~92页各类拥有的域);电话卡域:剩余金额方法:拨打电话查询金额无卡号电话卡域:电话机型号方法:获得电话机型号有卡号电话卡域:卡号,密码,接入号码,接通方法:登录交换机IP卡域:有效时间方法:拨打电话200卡域:附加费用方法:拨打电话修改密码电话IC卡方法:拨打电话电话磁卡域:使用地域方法:拨打电话继承继承继承继承继承继承域的隐藏子类重新定义一个从父类继承来的域变量(可以具有不同类型),称为域的隐藏(指新定义的域变量隐藏了父类的同名变量

4、)。举例:《例5-2》的简化版;abstractclassA{doublem_a;abstractdoublesub();doubleget(){returnm_a;}}classBextendsA{doublem_a;doublesub(){m_a-=1;returnm_a;}doublesuper_sub(){super.m_a-=1;returnsuper.m_a;}}publicclassApplication1{publicstaticvoidmain(String[]args){Bb=newB();b

5、.m_a=100;System.out.println(b.get());System.out.println(b.sub());System.out.println(b.super_sub());}}输出为:099-1;b.m_a=100;b.get()b.sub()b.super_sub()问题:以下程序访问的是父类还是子类?《要点》:1)被隐藏的父类域在子类对象中仍占有独立的内存空间;2)子类可通过super关键字或继承自父类的方法访问或处理继承自父类的域。方法的继承与覆盖继承:子类可继承父类的所有非私有方

6、法;覆盖(Override):子类重新定义与父类同名的方法(指非静态方法,要求方法名、返回值和参数列表完全相同);如果子类的非抽象方法覆盖了父类的抽象方法,称子类“实现”了父类的抽象方法。abstractclassA{doublem_a;abstractdoublesub();doubleget(){returnm_a;}}classBextendsA{doublem_a;doublesub(){m_a-=1;returnm_a;}doublesuper_sub(){super.m_a-=1;returnsupe

7、r.m_a;}doubleget(){returnm_a;}}//测试publicclassApplication1{publicstaticvoidmain(String[]args){Bb=newB();b.m_a=100;System.out.println(b.get());}输出为:100《例》域的隐藏、方法覆盖、方法重载classPoint{//父类 intx=0,y=0; voidmove(intdx,intdy){x+=dx;y+=dy;}}classRealPointextendsPoint{/

8、/子类 floatx=0.0f,y=0.0f;//域的隐藏voidmove(intdx,intdy)//方法的覆盖{System.out.println("subclass'smove");move((float)dx,(float)dy);}voidmove(floatdx,floatdy)//方法的重载{x+=dx;y+=dy;}}publicclassApplica

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。