- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java 重写(Override)与重载(Overload)
Java 重写(Override)与重载(Overload)重写(Override)重写是子类对父类的允许访问的方法的实现过程进行重新编写!返回值和形参都不能改变。即外壳不变,核心重写!重写的好处在于子类可以根据需要,定义特定于自己的行为。也就是说子类能够根据需要实现父类的方法。在面向对象原则里,重写意味着可以重写任何现有方法。实例如下:classAnimal{publicvoid move(){System.out.println(动物可以移动);}}classDogextendsAnimal{publicvoid move(){System.out.println(狗可以跑和走);}}publicclassTestDog{publicstaticvoid main(String args[]){Animal a =newAnimal();// Animal 对象Animal b =newDog();// Dog 对象 a.move();// 执行 Animal 类的方法 b.move();//执行 Dog 类的方法}}以上实例编译运行结果如下:动物可以移动狗可以跑和走在上面的例子中可以看到,尽管b属于Animal类型,但是它运行的是Dog类的move方法。这是由于在编译阶段,只是检查参数的引用类型。然而在运行时,Java虚拟机(JVM)指定对象的类型并且运行该对象的方法。因此在上面的例子中,之所以能编译成功,是因为Animal类中存在move方法,然而运行时,运行的是特定对象的方法。思考以下例子:classAnimal{publicvoid move(){System.out.println(动物可以移动);}}classDogextendsAnimal{publicvoid move(){System.out.println(狗可以跑和走);}publicvoid bark(){System.out.println(狗可以吠叫);}}publicclassTestDog{publicstaticvoid main(String args[]){Animal a =newAnimal();// Animal 对象Animal b =newDog();// Dog 对象 a.move();// 执行 Animal 类的方法 b.move();//执行 Dog 类的方法 b.bark();}}以上实例编译运行结果如下:TestDog.java:30: cannot find symbolsymbol : method bark()location:classAnimal b.bark();^该程序将抛出一个编译错误,因为b的引用类型Animal没有bark方法。方法的重写规则参数列表必须完全与被重写方法的相同;返回类型必须完全与被重写方法的返回类型相同;访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。父类的成员方法只能被它的子类重写。声明为final的方法不能被重写。声明为static的方法不能被重写,但是能够被再次声明。子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法。子类和父类不在同一个包中,那么子类只能够重写父类的声明为public和protected的非final方法。重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以。构造方法不能被重写。如果不能继承一个方法,则不能重写这个方法。Super关键字的使用当需要在子类中调用父类的被重写方法时,要使用super关键字。classAnimal{publicvoid move(){System.out.println(动物可以移动);}}classDogextendsAnimal{publicvoid move(){super.move();// 应用super类的方法System.out.println(狗可以跑和走);}}publicclassTestDog{publicstaticvoid main(String args[]){Animal b =newDog();// Dog 对象 b.move();//执行 Dog类的方法}}以上实例编译运行结果如下:动物可以移动狗可以跑和走重载(Overload)重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。每个重载的方法(或者构造函数
您可能关注的文档
- 巴格达女王莱德罗纳,Empress of the Pagodas;拉威尔,Joseph Maurice Ravel(Hyman改编古典吉他谱).doc
- 【江苏专用】2014届高三英语一轮复习方案课时作业:模块2 Unit 1 Tales of the unexplained.doc
- 工程承包英语词汇.doc
- 城市规划 外文翻译 1000多字的英文。.doc
- 常用的心理测量一览表(小结).doc
- House.of.Cards.S01E01 中英双语字幕.doc
- 拉威尔《夜之幽灵》和声分析.doc
- 道路勘测设计期末课程论文.doc
- Excel中创建复选菜单.docx
- 世界著名音乐家(按出生年月排序).doc
文档评论(0)