-
28-09-2019 - |
题
我有一个派生类使用的函数,但是第三类不使用,即使将其放在基类中,即使3个派生类中的一个不使用它,它也有意义吗?
我想不到的唯一的方法是基本上创建一个基本的中间类,然后使用公共函数的2个从第二类中得出。
是否有可能在让应该使用它的两个使用该功能的同时防止第三类使用该功能?
这是否只是过分了,我的意思是,只要我不“尝试”调用第三堂课的功能,这应该不是问题,如果有一种方法可以防止一切,我就很感兴趣在一起没有很多麻烦。
解决方案
没有办法直接做到这一点。基本上,当您子类时,您是说子类是基类的更具体版本。
在这种情况下,您正在尝试说:“子类是基类的更具体版本, except for the fact that it shouldn't be able to touch XXX
“。从本质上讲,这违反了 Liskov替代原则.
处理此问题的最佳方法是在层次结构中添加第二个基类,我相信您提到的解决方案。
基本上,使您的层次结构:
base
| \---- subclass without feature available
|
\--base+feature
\--subclass one with specific feature
\--subclass two with specific feature
其他提示
您可以使此函数虚拟。然后在第三类中覆盖函数,然后抛出异常。它将阻止开发人员在第三类中使用该功能。
不隶属于 StackOverflow