扩展具有通用功能的类

发布于 2024-10-06 13:18:44 字数 352 浏览 1 评论 0原文

我有三个类,它们基本上做非常相似的事情;

  1. 存储上传文件的记录。
  2. 移动并上传文件。
  3. 将记录的状态设置为活动或已撤销。

其中一个类有一个附加的更新方法。每个类都引用数据库中的不同表,因为尽管某些字段是通用的,但某些表中还有一些额外的字段。

由于很多功能都是常见的,我认为最好扩展基类而不是复制很多功能。

我唯一的争议是基类上的构造函数。由于每个表中的一些字段是额外的,我担心这会阻止基类。

我曾考虑过使用抽象类,因为这将使我能够扩展功能,同时将大部分内容保留在一个地方。但这是构造的问题。我可以有一个没有构造的抽象类吗?

有什么想法吗?

I have three classes which basically do very similar things;

  1. Store a record of an uploaded file.
  2. Move and upload the file.
  3. Set the status of the record to active or revoked.

One of the classes has an additional update method. Each class references a different table in the database because although some of the fields are common, there are a couple of fields extra in some of the tables.

As quite a lot of the functionality is common I think it may be best to extend a base class rather than duplicating a lot of the functionality.

My only quarrel is the construct function on the base class. As some of the fields in each table are additional I'm concerned this will prevent a base class.

I have thought of using an abstract class as this will allow me to extend on functionality whilst maintaining most of the things in one place. But it's the problem with the construct. Can I have an abstract class with no construct?

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

彻夜缠绵 2024-10-13 13:18:44

如果我理解你的话:你可以拥有任何类,而无需__construct()。并且您始终可以在子类中覆盖父类的每个方法(声明为 final 的方法除外)。

If I understand you: You can have any class without __construct(). And you can always overwrite every method (except methods, that are declared as final) of a parent class in a child class.

溺ぐ爱和你が 2024-10-13 13:18:44

很抱歉,但我想我不完全理解你的问题。无论如何,在继承类中,您始终可以重写构造函数,并在其中调用超类构造函数以及更多内容(如果需要)。

I am sorry but I guess I do not completely understand your question. Anyway in inherited class you can always override the constructor and within it invoke the superclass constructor plus further stuff if needed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文