Fre*_*els 43
没有; 重载是创建一个具有相同名称的方法,具有不同数量的参数,或者具有其他类型的参数.
多态性是关于改变各种类型的特定方法的实现/功能(它们都具有相同的"基类型").
重载:
public class TestClass
{
public void DoSomething( int a, int b ) {}
public void DoSomething( int a, int b, string x ) {}
}
Run Code Online (Sandbox Code Playgroud)
多态性:
public abstract class Base
{
public abstract DoSomething();
}
public class A : Base
{
public override DoSomething()
{
Console.WriteLine("I am A");
}
}
public class B : Base
{
public override DoSomething()
{
Console.WriteLine("I am B");
}
}
Run Code Online (Sandbox Code Playgroud)
Ahm*_*hmy 10
多态和方法重载之间的区别在于确定实际执行方法的时间.原因是当方法过载时,例如:
account = new BankAccount();
account = new BankAccount(1000);
Run Code Online (Sandbox Code Playgroud)
编译器可以告诉方法签名使用哪个构造函数,包括提供的参数的数量和类型.在程序运行之前,在编译时使用的这种方法的选择称为早期绑定.另一方面,当我们使用多态方法调用(如x.getMeasure())时,调用的实际getMeasure()方法取决于x引用的对象类型.因为在程序运行之前不构造对象,所以在运行时确定调用的方法.因此,虚拟机,而不是编译器选择适当的方法.此方法选择称为后期绑定.