重载是多态吗
重载和多态之间概念有交叉。多态是同一个类型,表现出多种不同行为。重载可以根据静态子类型分派不同表现,所以它是一种静态多态。但是,有些重载并不是针对静态子类型,所以它不是多态。
重载和多态之间概念有交叉。
多态是同一个类型,表现出多种不同行为。重载可以根据静态子类型分派不同表现,所以它是一种静态多态。但是,有些重载并不是针对静态子类型,所以它不是多态。
class A {}
class B extends A {}
class C extends A {}
public class Client {
public void f(B obj) { }
public void f(C obj) {}
public void g(double num) {}
public void g(String num) {}
}
这里Client.f是多态,Client.g不是多态。
延伸阅读:
重载
overload可直译为重载,它是指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法,然后再调用时,VM就会根据不同的参数样式,来选择合适的方法执行。
overload最常见于java的编写过程中,是面向对象程序设计(Object Oriented Programming)的特性之一。
多态
在编程语言和类型论中,多态(英语:polymorphism)指为不同数据类型的实体提供统一的接口。 多态类型(英语:polymorphic type)可以将自身所支持的操作套用到其它类型的值上。
多态是为了提高抽象与复用的能力,目前主要类型有:
1)参数多态,即函数式多使用的,多称为泛型。
2)子类型,也可以叫面向对象。