黑马程序员技术交流社区

标题: 返回值类型为子父类问题! [打印本页]

作者: Laopozini123    时间: 2016-3-21 09:44
标题: 返回值类型为子父类问题!
class Demo4_Override {
        public static void main(String[] args) {
               
        }
}

class Person {
        public void print() {
                System.out.println("Person");
        }
}

class Student extends Person {
        public void print() {
                System.out.println("Student");
        }
}

class Father {
        public Person method() {
                return new Person();
        }
}

class Son extends Father {
        public Student method() {
                return new Student();
        }
}


上边是代码,father里面的方法返回值是person类型,下边son里方法返回值是student类型的。那么我想问,father里的返回值类型能不能设置成student的?son里的返回值类型能不能设置成person的?求大神帮助解答~


作者: 11210107    时间: 2016-3-21 13:09
本帖最后由 11210107 于 2016-3-21 16:15 编辑

Father类中的method方法返回是Person的一个实例,返回值类型必须是Person类或Person的父类类型,不能设置成Student,Son中的方法可以设置成Person类型的,(多态向上转型)
作者: 305450674    时间: 2016-3-21 13:27
因为Student继承了Person,所以返回值类型为Person的Father类可以接收Student对象,但是返回值类型为Student的Son类不可以接收Person对象。所以结论是,Son类中的method方法返回值类型可以设置成Person,Father类中的method方法返回值类型不可以设置成Student。
作者: lijiy09    时间: 2016-3-21 15:35
Person类和Student类不是抽象类,Father类和Son类应该都可以返回它俩吧?
作者: Laopozini123    时间: 2016-3-21 15:59
11210107 发表于 2016-3-21 13:09
Father类中的method方法返回是Person的一个实例,返回值类型必须是Person类或Person的父类类型,不能设置 ...

感谢~非常感谢~弄懂了一块~
作者: lq229190730    时间: 2016-3-21 17:36
好多大神的样子
作者: a8271275    时间: 2016-3-21 18:54

大兄弟加油,你是最棒的.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2