子类和父类同名方法,方法重写

前提

需要有继承关系

方法重写表现

  • 方法名必须相同
  • 参数列表必须相同
  • 返回值类型必须相同

    修饰符

    范围可以扩大或相同,但是不能缩小

  • 我们在父类里面声明方法的访问修饰符,在子类中同名的这个方法声明的访问修饰符扩大或相同,但是不能降低访问修饰符的范围

**public > protected > default**

  • 比如在父类声明的同类方法是public修饰,在子类中就必须是public,因为没有大于它的,只能相同
  • 如果在父类声明的同类方法是protected修饰,在子类中就可以是protected或者public,相同或者大于

方法重写

image.png

不能重写父类的private方法,如果定义的话只是定义了一个新方法,不是方法重写
image.png

运行时多态

后期绑定

如果被调用的方法在编译期无法被确定下来,只能够在程序运行期根据实际的类型绑定相关的方法,这种绑定方式也被称之为后期绑定

运行时多态

方法重写是根据实际的类型决定调用哪个重写的方法,发生在运行期间,也叫做运行时多态

  • 方法重载叫做编译时多态
  • 方法重写叫做运行时多态

image.png