重载和重写是多态的体现
Java 三大特性: 封装、继承、多态
- 重载(Overload): 同一类中同名的方法, 具有不同参数个数或类型, 是类的多态性的体现, 由静态类型确定, 在类加载的时候就确定, 属于静态分配
- 重写(Override): 子类中的与父类相同方法名、返回类型、形参列表的方法, 是在继承中多态性的体现, 属于动态分配
方法的重载和重写都是多态性的体现, 区别是重载实现编译时的多态性, 后者实现运行时的多态性
重载发生在一个类中, 重写发生在子类与父类之间
重载方法必须至少有形参个数或类型的不同, 重写则必须有相同的形参和兼容的返回类型
重写方法还需注意: 要比父类方法更好访问, 不能比父类方法声明更多的异常(里氏替换原则)