子类重新实现父类的方法称重写;重写时可以修改访问权限修饰符和返回值,方法名和参数类型及个数都不可以修改;仅当返回值为类类型时,重写的方法才可以修改返回值类型,且必须是父类方法返回值的子类;要么就不修改,与父类返回值类型相同。那么,该如何理解呢?为什么要是父类返回值类型的子类?
作者: 蝉蝉
请尊重作者劳动成果,转载请在标题注明“转载”字样,并标明原文链接:
http://www.cnblogs.com/chanchan/p/7796472.html
还是先看示例,详见下文。
包human中定义了三个类,Person类、Student类和TestMain类,其中Student类是Person类的子类。代码分别如下:
Person类的代码如下:
package human; public class Person { String name; int age; //test:重写 public Person overRide() { Person per = new Person(); per.name = "liu"; return per; } }
Student类重写了父类的overRide()方法,代码如下:
package human; public class Student extends Person { String stuNumber; int score; //test:重写 public Student overRide() { Student stu = new Student(); stu.name = "li"; return stu; } }
TestMain类的代码如下:
package human; public class TestMain { public static void main(String[] args) { Student stu = new Student(); Person per = new Person(); per = stu.overRide(); System.out.println(per.name); per = per.overRide(); System.out.println(per.name); }
输出结果为:
1 li 2 li