什么是多态,什么是它,以及它是如何使用的?
我正在观看Google Tech Talks视频,他们经常提到多态。
什么是多态,什么是它,以及它是如何使用的?
如果你考虑这个词的希腊词根,它应该变得很明显。
所以多态性是(编程中)为不同的底层表单(数据类型)呈现相同接口的能力。
例如,在许多语言中,整数和浮点数是隐式多态的,因为您可以进行加,减,乘等操作,而不管类型是否不同。 它们很少被视为通常术语中的对象。
但是,以同样的方式,像BigDecimal
或Rational
或Imaginary
这样的类也可以提供这些操作,即使它们使用不同的数据类型。
经典的例子是Shape
类和所有可以继承它的类(正方形,圆形,十二面体,不规则多边形,splat等)。
通过多态性,这些类中的每一个都将具有不同的基础数据。 点形状只需要两个坐标(当然,假设它在二维空间中)。 一个圆需要一个中心和半径。 正方形或矩形需要两个坐标,用于左上角和右下角以及(可能)旋转。 不规则的多边形需要一系列线条。
通过让这个类负责它的代码以及它的数据,你可以实现多态。 在这个例子中,每个类都有自己的Draw()
函数,客户端代码可以简单地做到:
shape.Draw()
为任何形状获得正确的行为。
这与将代码与数据分开的旧做法形成对比,并且您将拥有诸如drawSquare()
和drawCircle()
函数。
面向对象,多态和继承都是紧密相关的概念,它们对知道至关重要。 在我漫长的职业生涯中有很多“银弹”,基本上只是失败了,但OO模式已经变成了一个很好的例子。 了解它,了解它,喜欢它 - 你会很高兴你做到了:-)
(a)我原本写这个笑话,结果证明是正确的,因此并不那么有趣。 单体苯乙烯恰好由碳和氢C8H8
制成,而聚苯乙烯则由(C8H8)n
。
也许我应该说一个息肉是p
字母的很多次出现,尽管现在我不得不解释这个笑话,即使这个看起来也不好笑。
有时候,你应该放弃,而你在后面:-)
多态性是指可以将某个对象视为某种通用版本的对象,但是当您访问该对象时,代码会确定它的确切类型并调用相关的代码。
这里是C#中的一个例子。 在控制台应用程序中创建四个类:
public abstract class Vehicle
{
public abstract int Wheels;
}
public class Bicycle : Vehicle
{
public override int Wheels()
{
return 2;
}
}
public class Car : Vehicle
{
public override int Wheels()
{
return 4;
}
}
public class Truck : Vehicle
{
public override int Wheels()
{
return 18;
}
}
现在在控制台应用程序的模块的Main()中创建以下内容:
public void Main()
{
List<Vehicle> vehicles = new List<Vehicle>();
vehicles.Add(new Bicycle());
vehicles.Add(new Car());
vehicles.Add(new Truck());
foreach (Vehicle v in vehicles)
{
Console.WriteLine(
string.Format("A {0} has {1} wheels.",
v.GetType().Name, v.Wheels));
}
}
在这个例子中,我们创建一个基类Vehicle的列表,它不知道每个子类有多少个车轮,但是知道每个子类负责知道它有多少个车轮。
然后,我们在列表中添加一辆自行车,汽车和卡车。
接下来,我们可以遍历列表中的每个车辆,并将它们全部相同地处理,但是当我们访问每个车辆车轮的属性时,Vehicle类将该代码的执行委托给相关的子类。
这段代码被认为是多态的,因为被执行的确切代码是由在运行时被引用的子类决定的。
我希望这可以帮助你。
从理解和应用PHP中的多态性,谢谢Steve Guidetti。
多态性对于一个非常简单的概念来说是一个长长的词汇。
多态性描述了面向对象编程中的一种模式,其中类在共享通用接口时具有不同的功能。
多态的美妙之处在于,使用不同类的代码不需要知道它使用的是哪个类,因为它们都以相同的方式使用。 一个真实世界的多态性类比是一个按钮。 每个人都知道如何使用按钮:您只需施加压力即可。 然而,按钮“做了什么”取决于它所连接的内容以及它使用的上下文 - 但结果并不影响它的使用方式。 如果你的老板告诉你按下一个按钮,你已经拥有完成任务所需的所有信息。
在编程世界中,多态性用于使应用程序更加模块化和可扩展。 您可以根据需要创建可互换的对象,而不是描述不同行为过程的混乱条件语句。 这是多态的基本目标。
链接地址: http://www.djcxy.com/p/43081.html上一篇: What is polymorphism, what is it for, and how is it used?