gpt4 book ai didi

oop - 使用抽象类与常规类的好处

转载 作者:行者123 更新时间:2023-12-03 11:49:51 26 4
gpt4 key购买 nike

我决定开始自己做一些小型编码项目,专注于代码质量而不是代码数量,并且对抽象类的使用有疑问。

现在我知道抽象类和接口(interface)之间的区别,最大的一个(我认为)是接口(interface)允许您只定义需要由使用接口(interface)的类实现的方法,而抽象类允许您定义方法和成员以及如果您愿意,可以使用默认方法实现。我的问题是使用抽象类与普通类的主要好处是什么?我能想到的两者之间唯一真正的区别是您不能创建抽象类的实例。两者之间还有其他区别吗?

最佳答案

严格来说,从设计的角度来看,最好是把事情简化。我相信简化事情的最好方法是使用一个简单的类比。让我们用鸟类来类比......

接口(interface):当您想要强制执行某些需要定义的功能时使用它。例如IBird 有 ScreamLikeABird 和 Fly(接口(interface)功能)的契约(Contract)。但是你可以得到更具体的信息,并拥有一个具有 Run 契约(Contract)的 IOstrich。你可能还有一个 IHawk,它有一个攻击契约(Contract)……等等。

摘要:当您想要强制执行基本功能并具有基本属性时,请使用它。例如Avian 可以是鸟类的基类,它可能具有称为 LayEgg 的函数以及称为 Age、Species、NumberOfChicks 等的属性。这些事情不会/不应该改变鸟类的行为,因为所有的鸟类都会产卵......等等。但并不是所有的鸟在尖叫或以相同的方式飞行时听起来都一样(有些甚至不飞)......等等......因此它们应该通过接口(interface)来实现。

关于oop - 使用抽象类与常规类的好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3182440/

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