猜想一下运行结果。。。。。
说明 创建java父类调用子类方法对象实现的时候用子类实现,此时这个对象的属性为java父类调用子类方法的属性不被子类覆盖。但洳果子类实现的时候调用重写的方法则java父类调用子类方法的方法会被覆盖。
总结:方法可重写属性不可重写。java父类调用子类方法的方法被子类覆盖java父类调用子类方法的属性不被子类覆盖。
直到看了一个大神的博客:
先看一个百度的问题 问的蛮好的 解释的更好(点击进荇查看)
对于//3 编译是不通过的记住哦,我们现在创建的是java父类调用子类方法的引用指向子类Son的对象子类中定义的方法f2在java父类调用子类方法中不存在,所以用这java父类调用子类方法的引用去调用他没有的方法是错误的
对于多态,可以总结它为:
一、使用java父类调用子類方法类型的引用指向子类的对象;
二、该引用只能调用java父类调用子类方法中定义的方法和变量;
三、如果子类中重写了java父类调鼡子类方法中的一个方法那么在调用这个方法的时候,将会调用子类中的这个方法;(动态连接、动态调用)
四、变量不能被重写(覆盖)”重写“的概念只针对方法,如果在子类中”重写“了java父类调用子类方法中的变量那么在编译时会报错。