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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

好吧,我不是在水贴,这句话真的今天没理解了,问同学也都一知半解,讲不明白,求论坛的大神给我解答一下,万分感谢

问题:
子类返回值默认要小于或者等于父类返回值      与这句话对应的是: 子类修饰符类型要大于或者等于父类修饰符类型
后面这句我理解了,就是前面这句不大清楚,不知道在这的返回值是什么意思...............啊啊啊啊啊啊啊啊啊啊啊啊啊
求大神解答,

10 个回复

正序浏览
加油呀
回复 使用道具 举报
class A{}
class B extends A{}

abstract class Animal
{
        String name;
        public Animal() {
               
        }
        public Animal(String name) {
                this.name=name;
        }
       
        abstract A run();
}
class Dog extends Animal
{

        @Override
        public B run() {
               
                return new B();                               
        }
       
}

B 是A 的子类
Dog类是Animal的子类,Dog类继承了Animal类以后要实现其父类的抽象方法run();父类抽象方法中run()的返回值类型时A类的,所以子类Dog在实现父类的run()方法时,返回值要小于等于父类的返回值类型,即可以是A类的对象,也可以是A子类的对象,比如B类的对象;
回复 使用道具 举报
fansilek 发表于 2017-4-16 15:20
单独一句话看不懂 最好能有上下文


子父类重写,如果子类重写了父类的方法,必须要走子类的重写吧,
当创建子类对象的时候,重写的方法被子类调用,但调用前要看返回值类型,因为方法规则是编译期看父类,如果返回值类型大于父类那么编译期就无法判断这是父类,此时就会报错.
回复 使用道具 举报
597824751 发表于 2017-4-16 02:12
思来想去发现继承中的方法要不重写要不就子类特有,跟返回值扯上了什么联系?
...


子父类重写,如果子类重写了父类的方法,必须要走子类的重写吧,
当创建子类对象的时候,重写的方法被子类调用,但调用前要看返回值类型,因为方法规则是编译期看父类,如果返回值类型大于父类那么编译期就无法判断这是父类,此时就会报错.
回复 使用道具 举报
是继承的问题吗 没太看明白lz要问什么。。
回复 使用道具 举报
我表示没有看懂  这个跟返回值有什么关系?多态也没有这种说法呀  就算是继承  或者重写  最多就是修饰符的问题  返回值我是真的不知道了  
回复 使用道具 举报
千千阙歌 来自手机 中级黑马 2017-4-16 22:59:52
报纸
看看看看
回复 使用道具 举报
love20121217 来自手机 初级黑马 2017-4-16 21:21:39
板凳
管他是什么 子类父类永远写一样的不就可以了
回复 使用道具 举报
单独一句话看不懂 最好能有上下文
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
思来想去发现继承中的方法要不重写要不就子类特有,跟返回值扯上了什么联系?
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马