Вопрос

У меня есть функция, которую используют 2 полученных классов, но третий не будет, он имеет смысл просто оставить его в базовом классе, хотя один из 3 полученных классов не использует его?

Единственный способ, которым я мог бы подумать о запрещении третьего класса, заключается в том, чтобы в основном создать промежуточный класс, который получен из основания, то 2, которые используют общую функцию, вытекают со второго класса.

Можно ли предотвратить использование 3-го класса с использованием функции, в то же время, позволяя двум, которые должны его использовать, используйте его?

Это просто кажется, по-видимому, я имею в виду, пока я не «пытаюсь» называть функцию из 3-го класса, это не должно быть проблемой, мне просто было интересно, если бы был способ предотвратить все это вместе без много хлопот.

Это было полезно?

Решение

Там не способ сделать это напрямую. В основном, когда вы подкласс, вы говорите, что подкласс является более конкретной версией базового класса.

В этом случае вы пытаетесь сказать «подкласс является более конкретной версией базового класса, except for the fact that it shouldn't be able to touch XXX". Это, по сути, нарушая Принцип замены Лискива.

Лучший способ справиться с этим - добавить второй базовый класс в своей иерархии, что я считаю, что вы упомянуте решение.

По сути, сделайте свою иерархию:

base
 | \----   subclass without feature available
 |
 \--base+feature
       \--subclass one with specific feature
       \--subclass two with specific feature

Другие советы

Вы можете сделать эту функцию виртуальной. Затем переопределите функцию в 3-м классе и брось исключение. Это помешает разработчикам использовать функцию в 3-м классе.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top