Предположим, у меня есть абстрактный родительский класс, называемый «форма», и что существует несколько подклассов (треугольник, квадрат, круг ...). Я хочу определить абстрактный метод в родительском классе «shape», который должны реализовать все подклассы, назовем его «draw». Поэтому все подклассы формы должны предоставлять метод draw(). Но метод рисования принимает параметр типа «Stencil», и не каждый подкласс формы может использовать только какой-либо трафарет ...Возможно ли иметь специализированные параметры в переопределенных методах?
Итак, существует один абстрактный класс «форма», несколько подклассов формы и несколько трафаретов. Мне нужен метод рисования, определенный в классе формы. Квадрат может использовать Stencil1, и круг может использовать Stencil2.
Я предполагаю, что дженерики будут делать трюк, но я не уверен. Каждый подкласс формы должен определять метод draw с помощью определенного шаблона, потому что эти классы также используются другими классами, а компилятор должен заставить всех программистов вызывать методы рисования с помощью трафарета, поддерживаемого этим классом. Мы не можем определить абстрактный метод, такой как «публичная абстрактная пустота рисования (Stencil s)», потому что тогда программист мог передать любой трафарет в квадратный класс, тогда как квадратный класс поддерживает только «Stencil1»
Любые идеи?
Update1: Следует добавить, что класс формы не заботится, который трафарет используется подкласс, но так как подклассы используются в других классах тоже, это важно, что метод рисования определяется так, что только поддерживаемый трафарет принимается компилятором.
Кроме того, что класс формы заботится, потому что, как вы заявили, «компилятор должен заставить все программист вызывать методы нарисованных с помощью трафарета, который поддерживается этим классом» – cgp
Нет, класс формы не забота; это другое использование различных классов формы, которые заботятся. – user85116