在我进入问题的实质之前,让我注意这是一个纯粹的理论问题。出于实际原因,我对此不感兴趣,我对如何处理这种情况的底层 OOP 理论感兴趣。
在我正在进行的一个项目中,我有两个密切相关的类。一种是通用的“用户”类。另一个是子类,并添加了某些用户使用的附加功能——对于一个通用示例,可以考虑一个“主持人”类。
如何处理用户类上可用的公共方法,这些方法对孩子调用没有意义?
例如,调用 User::getUserWithId(id) 非常有意义(此方法从数据库中检索数据并使用该数据初始化并返回用户类);在主持人类中使用该方法没有多大意义(如果有的话)。
我是否应该忽略它——如果用户调用 moderator::getUserWithId(id),他们仍然会得到一个用户,这正是他们所要求的。尽管有方法名称,我是否应该覆盖它以返回主持人?还是在我不熟悉的 OOP 领域有什么东西可以让我“阻止”通话?