gpt4 book ai didi

c# - 这是多态的例子吗?

转载 作者:太空狗 更新时间:2023-10-29 17:28:07 25 4
gpt4 key购买 nike

我知道什么是多态性,但没能理解清楚。我的代码如下:

class Human
{
public virtual void CleanTheRoom()
{
}
}
class Woman:Human
{
public override void CleanTheRoom()
{
//women clean faster
}
}
class Man:Human
{
public override void CleanTheRoom()
{
//men clean slower, different code here
}
}
class Child:Human
{
public override void CleanTheRoom()
{
//empty ... children are lazy :)
}
}

我是否应该解释这是多态性,因为基类 Human 的所有派生类都包含方法 CleanTheRoom,但每个派生类的实现方式不同?

最佳答案

当您想在某种类型的 Human 上调用方法时,多态性的好处就来了,但您不关心具体是哪一个。

通过在基类级别 Human 定义 CleanTheRoom(),无论何时使用人类,无论是 child 还是其他。

例如,多态性让您可以避免冗长的条件语句,您可以在其中显式检查每种类型的 Human 并调用不同的方法:

好:

private void SomeMethod(Human h)
{
//some logic
h.CleanTheRoom();
//more logic
}

差:

private void SomeMethod(Human h)
{
//some logic
if (h is Adult)
CleanTheRoom();
else if (h is Child)
GoofOff();
//some logic
}

关于c# - 这是多态的例子吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5543510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com