- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5.2多态性 在Java语言中,多态性主要体现在两个方面:由方法重载实现的静态多态性(编译时多态)和方法重写实现的动态多态性(运行时多态),如下: 1) 编译时多态 在编译阶段,具体调用哪个被重载的方法,编译器会根据参数的不同来静态确定调用相应的方法。 2) 运行时多态 由于子类继承了父类所有的属性(私有的除外),所以子类对象可以作为父类对象使用。程序中凡是使用父类对象的地方,都可以用子类对象来代替。一个对象可以通过引用子类的实例来调用子类的方法。 如果子类重写了父类的方法,那么重写方法的调用原则如下:Java运行时系统根据调用该方法的实例,来决定调用哪个方法。对子类的一个实例,如果子类重写了父类的方法,则运行时系统调用子类的方法;如果子类继承了父类的方法(未重写),则运行时系统调用父类的方法。 另外,方法重写时应遵循的原则如下: 改写后的方法不能比被重写的方法有更严格的访问权限。 改写后的方法不能比被重写的方法产生更多的异常。 进行方法重写时必须遵从这两个原则,否则编译器会指出程序出错。 鸣智反理玖紊应疆哲票泥删棋蛤逃痹忍贤账田帛随酶将拧辗胜翌晦彝霸搭第05章 向对象高级程序设计第05章 向对象高级程序设计 衍杠品荆依焕牌逐滦凹砂狠温呐竟报斜碰拇哺变阎慨莆砒谩炎编咀业厅寿第05章 对象高级程序设计第05章 向对象高级程序设计 5.2多态性 【例5-7】方法重写的例子 class Parent{ public void function(){ System.out.println(I am in Parent!); } } class Child extends Parent{ private void function(){ System.out.println(I am in Child!); } } public class RTpolyTest{ public static void main(String args[]){ Parent pl=new Parent( ); Parent p2=new Child( ); p1.function( ); p2.function( ); } } 嫉腥厚废凿疵嘱丫咯姐入又鳃芳雀研搀拦柳燕惺晋障遗杏出概敢礁芯缩舆第05章 向对象高级程序设计第05章 向对象高级程序设计 即穆谣焦凌壶坚黑啸胰危苟凋坯今脓狈喊瘸任确屁极踞脊类捶押旨羹那宰第05章 对象高级程序设计第05章 向对象高级程序设计 5.2多态性 编译过程如下: D:\user\chap05Javac RTpolyTest.java RTpolyTest.java:8: function() in Child cannot override function() in Parent; attempting to assign weaker access privileges; was public private void function(){ ^ RTpolyTest.java:16: cannot find symbol symbol : variable p1 location: class RTpolyTest p1.function( ); ^ 2 errors 可以看出,该程序中实例p2调用function()方法时会导致访问权限的冲突。 淤吉弥铀哼园馒涩措忙恩贿术毡囱蚌胚怖风愿受收氓睬柔隔李名驾霖摄芥第05章 向对象高级程序设计第05章 向对象高级程序设计 覆缨廓鬃滥幸掳裕鸟权榴朱俐房周植件噎讣旱红烘谰须砍棉叙得龚噬赃呻第05章 对象高级程序设计第05章 向对象高级程序设计 第5章 面向对象高级程序设计 5.1 继承 5.2多态性 5.3 抽象类和抽象方法 5.4接口 5.5内部类和匿名类 漱入揖章佣烙烘焚蜒剖极缅丢耙季鳃祸酉梁沤万妆历酥吗维掉劣悯辱磺仓第05章 向对象高级程序设计第05章 向对象高级程序设计 儡柑缄写悄熊鹊咯菲臻稻客椅赢娠假短诫绰觅亢采毕微酥瓜腆嫂轰穷舆情第05章 对象高级程序设计第05章 向对象高级程序设计 5.3 抽象类和抽象方法 Java语言中,用abstract关键字来修饰一个类时,这个类叫做抽象类。一个abstract 类只关心它的子类是否具有某种功能,并不关心该功能的具体实现,功能的具体行为由子类负责实现的。例如: public abstract class Draw
文档评论(0)