java 子类重写父类的方法.docx_第1页
java 子类重写父类的方法.docx_第2页
java 子类重写父类的方法.docx_第3页
java 子类重写父类的方法.docx_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

java 子类重写父类的方法 若想实现一个合格重写方法,而不是重载,那么必须同时满足下面的要求! A、重写规则之一:重写方法不能比被重写方法限制有更严格的访问级别。 (但是可以更广泛,比如父类方法是包访问权限,子类的重写方法是public访问权限。) 比如:Object类有个toString()方法,开始重写这个方法的时候我们总容易忘记public修饰符,编译器当然不会放过任何教训我们 的机会。出错的原因就是:没有加任何访问修饰符的方法具有包访问权限,包访问权限比public当然要严格了,所以编译器会报错的。 B、重写规则之二:参数列表必须与被重写方法的相同。 重写有个孪生的弟弟叫重载,也就是后面要出场的。如果子类方法的参数与父类对应的方法不同,那么就是你认错人了,那是重载,不是重写。 C、重写规则之三:返回类型必须与被重写方法的返回类型相同。 父类方法A:void eat() 子类方法B:int eat() 两者虽然参数相同,可是返回类型不同,所以不是重写。 父类方法A:int eat() 子类方法B:long eat() 返回类型虽然兼容父类,但是不同就是不同,所以不是重写。 D、重写规则之四:重写方法不能抛出新的异常或者比被重写方法声明的检查异常更广的检查异常。但是可以抛出更少,更有限或者不抛出异常。 import java.io.*; public class Test public static void main (String args) Animal h = new Horse(); try h.eat(); catch (Exception e) class Animal public void eat() throws Exception System.out.println (Animal is eating.); throw new Exception(); class Horse extends Animal public void eat() throws IOException System.out.println (Horse is eating.); throw new IOException(); 这个例子中,父类抛出了检查异常Exception,子类抛出的IOException是Exception的子类,也即是比被重写的方法抛出了 更有限的异常,这是可以的。如果反过来,父类抛出IOException,子类抛出更为宽泛的Exception,那么不会通过编译的。 注意:这种限制只是针对检查异常,至于运行时异常RuntimeException及其子类不再这个限制之中。 E、重写规则之五:不能重写被标识为final的方法。 F、重写规则之六:如果一个方法不能被继承,则不能重写它。 比较典型的就是父类的private方法。下例会产生一个有趣的现象。 public class Test public static void main (String args) /Animal h = new Horse(); Horse h = new Horse(); h.eat(); class Animal private void eat() System.out.println (Animal is eating.); class Horse extends Animal public void eat() System.out.println (Horse is eating.); 这段代码是能通过编译的。表面上看来违反了第六条规则,但实际上那是一点巧合。Animal类的eat()方法不能被继承,因此Horse类中的 eat()方法是一个全新的方法,不是重写也不是重载,只是一个只属于Horse类的全新的方法!这点让很多人迷惑了,但是也不是那么难以理解。 main()方法如果是这样: Animal h = new Horse(); /Horse h = new Ho

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论