Абстрактные классы, наследование, перезапись и т. д.
Привет Эксперты,
Я хочу определить (супер)класс, который скрывает код нескольких (суб)классов, которые все предоставляют одни и те же методы, но с разным кодом.
Упрощенный пример:
В приложении " Form1 "я создаю экземпляр (супер)класса" Printer "с аргументом" PrinterType " (enum). Этот класс " принтер "предоставляет метод" Print ()". Код для печати на различных аппаратных средствах должен быть закодирован в отдельных классах. Таким образом, класс" принтер " должен использовать/наследовать один из конкретных (суб)классов.
Единственный способ, который я нашел, - это объявить метод Print() в классах (sub)как общий. Но это для меня как определение Sub () в публичном модуле.
Я уверен, что есть лучший способ программирования в качестве моего обходного пути.
Что я уже пробовал:
Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load Dim oPrinter As New Printer(Printer.PrinterType.HP) oPrinter.Print() End Sub End Class Public Class Printer Public Enum PrinterType HP Epson End Enum Public ActivePrinter As PrinterType Public Sub New(ByVal mPrinterType As PrinterType) ActivePrinter = mPrinterType End Sub Public Sub Print() Select Case ActivePrinter Case PrinterType.HP HP_Printer.Print() Case PrinterType.Epson Epson_Printer.Print() End Select End Sub End Class Public Class HP_Printer Public Shared Sub Print() Beep() End Sub End Class Public Class Epson_Printer Public Shared Sub Print() Beep() End Sub End Class
Richard MacCutchan
Зачем вам нужны разные версии кода печати, когда все это идет в одно и то же место (диспетчер очереди Windows), Прежде чем быть переданным драйверу устройства?