首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OPPS -类继承

OPPS -类继承
EN

Stack Overflow用户
提问于 2016-05-11 16:27:27
回答 1查看 65关注 0票数 0

我有个基本的问题

我已经创建了一个名为xyz的抽象类,它包含了类Logger、Queue、Encryption的通用功能。类Logger、Queue、Encryption都是从xyz派生的。我需要进一步创建类ALogger、AQueue和AEncryption。ALogger将包含Logger的一些功能。AQueue & AEncryption也是如此。

那么,最好的选择是什么呢?

我的解决办法是

代码语言:javascript
复制
Abstract class xyz 
{
}

Abstract class Logger : xyz 
{
}

Abstract class Queue: xyz 
{
}

Abstract class Encryption : xyz 
{
}

class ALogger : Logger 
{
}

class AQueue: Queue: 
{
}

class AEncryption: Encryption 
{
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-11 17:00:27

诚实地说,最好的方法就是不要这样做。这些类似乎没有任何共同点,因此它们没有理由继承公共基类。即使他们确实有共同点,这也不是普通基类的一个很好的理由。

在实践中,继承通常不是类共享功能的好方法。我不会说这是普遍正确的,但迟早继承会崩溃。一个类需要与其他类的行为不同,因此我们返回并修改一个基类。

所有这些类都需要共享的xyz功能是什么?把它放在一个单独的类中,然后让所有其他类依赖于该类。仅仅因为它们依赖于xyz中的功能,这并不意味着它们应该继承它。三个不相关的类可以要求该功能,这一事实足以表明它属于自己的类。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37168388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档