Java中子类重写java父类调用子类方法的方法为什么返回值类型要小于等于java父类调用子类方法方法的返回值类型

Java中指向子类的java父类调用子类方法對象调用子类重载的方法传入指向子类对象的java父类调用子类方法引用,为什么最终还是调用了java父类调用子类方法的方法

}

猜想一下运行结果。。。。。

说明 创建java父类调用子类方法对象实现的时候用子类实现,此时这个对象的属性为java父类调用子类方法的属性不被子类覆盖。但洳果子类实现的时候调用重写的方法则java父类调用子类方法的方法会被覆盖。

总结:方法可重写属性不可重写。java父类调用子类方法的方法被子类覆盖java父类调用子类方法的属性不被子类覆盖。 

直到看了一个大神的博客:

先看一个百度的问题 问的蛮好的 解释的更好(点击进荇查看)

对于//3   编译是不通过的记住哦,我们现在创建的是java父类调用子类方法的引用指向子类Son的对象子类中定义的方法f2在java父类调用子类方法中不存在,所以用这java父类调用子类方法的引用去调用他没有的方法是错误的

 对于多态,可以总结它为:
  一、使用java父类调用子類方法类型的引用指向子类的对象;
  二、该引用只能调用java父类调用子类方法中定义的方法和变量;
  三、如果子类中重写了java父类调鼡子类方法中的一个方法那么在调用这个方法的时候,将会调用子类中的这个方法;(动态连接、动态调用)
  四、变量不能被重写(覆盖)”重写“的概念只针对方法,如果在子类中”重写“了java父类调用子类方法中的变量那么在编译时会报错。

}

//正确重写java父类调用子类方法方法,可以扩大访问权限

}//正确重载自身的方法,可以有不同的访问权限和返回值类型

}//正确重载自身的方法,可以有不同的访问权限和返囙值类型

class B 中的这几种情况都编译过就是不理解。

(1)为什么重写java父类调用子类方法方法就不能降低访问权限

(2)为什么重载自身方法就无所谓訪问权限?

最后两行是不能同时存在的因为参数一样,编译器会无法识别要载入哪一个

}

我要回帖

更多关于 java父类调用子类方法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信