A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Laopozini123 中级黑马   /  2016-3-21 09:44  /  1861 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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的?求大神帮助解答~

6 个回复

倒序浏览
本帖最后由 11210107 于 2016-3-21 16:15 编辑

Father类中的method方法返回是Person的一个实例,返回值类型必须是Person类或Person的父类类型,不能设置成Student,Son中的方法可以设置成Person类型的,(多态向上转型)
回复 使用道具 举报 1 0
因为Student继承了Person,所以返回值类型为Person的Father类可以接收Student对象,但是返回值类型为Student的Son类不可以接收Person对象。所以结论是,Son类中的method方法返回值类型可以设置成Person,Father类中的method方法返回值类型不可以设置成Student。
回复 使用道具 举报
Person类和Student类不是抽象类,Father类和Son类应该都可以返回它俩吧?
回复 使用道具 举报
11210107 发表于 2016-3-21 13:09
Father类中的method方法返回是Person的一个实例,返回值类型必须是Person类或Person的父类类型,不能设置 ...

感谢~非常感谢~弄懂了一块~
回复 使用道具 举报
好多大神的样子
回复 使用道具 举报

大兄弟加油,你是最棒的.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马