Java 多态,重载,重写

1.多态(polymorphism):

多态是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。这就是多态性。多态性增强了软件的灵活性和扩展性。

简单来说:发送消息给某个对象,让该对象自行决定响应何种行为。 通过将子类对象引用赋值给超类对象引用变量来实现动态方法调用。

多态须具备:

    a. 基类 和各个子类

    b. 基类 引用, 指向实例化的子类对象.

《计算机图形学》中的绘制逻辑就是多态,实现点线面元素的管理,调用父类的draw方式,最后点线面各子元素去绘制。

2.重写(override)

  a、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;
  b、覆盖的方法的返回值必须和被覆盖的方法的返回一致;
  c、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;
  d、被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖

3.重载(overload)

  a、在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是fun(int, float), 但是不能为fun(int, int));
  b、不能通过访问权限、返回类型、抛出的异常进行重载;
  c、方法的异常类型和数目不会对重载造成影响;
d、对于继承来说,如果某一方法在父类中是访问权限是priavte,那么就不能在子类对其进行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果。

原文地址:https://www.cnblogs.com/zhulongchao/p/4564621.html