子类重新实现父类的方法称重写;重写时可以修改访问权限修饰符和返回值,方法名和参数类型及个数都不可以修改;仅当返回值为类类型时,重写的方法才可以修改返回值类型,且必须是父类方法返回值的子类;要么就不修改,与父类返回值类型相同。那么,该如何理解呢?为什么要是父类返回值类型的子类?

 

作者: 蝉蝉

请尊重作者劳动成果,转载请在标题注明“转载”字样,并标明原文链接:

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
View Code

相关文章: