天天看点

多态和重写_「学习log」Java中的重写(Override)与重载(Overload)

昨天和老师讨论了很久Java多态中重写和重载的问题。因为刚开始学,很多内容容易混淆。

似懂非懂是不行滴!! 于是写了个小栗子 来区分重写和重载两者的作用时间以及静态方法无法被重写等特征~

多态和重写_「学习log」Java中的重写(Override)与重载(Overload)

首先,重要的两点:

  1. 重写:多态判定使用哪个重写的方法是在代码 运行 时做出。
  2. 重载:根据参数决定调用哪个方法是在代码 编译 时做出。

于是,上面两点可以解释为什么重写和重载同时存在时,两者相互不会影响。也解释了父类在指向子类之后,对象调用方法则会自动调用子类的方法:b.print输出Son。

接下来就是,子类无法重写父类的静态方法啦。图中的show方法在Grandson中修改后被c调用,但结果依然是父类中的I cannot be overrided.

类似静态方法,父类中的final方法和private 修饰的方法也无法被重写噢!

中的父类也写了int num和静态int age,两者在Grandson中也进行了修改。我们发现在运行之后,c调用的结果仍然是父类中的10和20,并未收到修改的影响。那么这种父类中的field variable 应该也是无法被重写的~(这个点是我自己写代码品出来的,还不太确定专业上要怎样解释(T▽T))

最后记住,继承是多态的基础!!!

没有继承的话多态啥也不是啦!

今日学习笔记完结 撒花撒花

多态和重写_「学习log」Java中的重写(Override)与重载(Overload)

继续阅读