Member 11138129 Ответов: 2

Vb.net защищенный ключевой вопрос


Предположим, у меня есть WinForm с именем Form1 со следующим:

Protected sampleVariable As String = "Hello World"


И я создаю производный класс под названием Class1 со следующими значениями внутри:

Public Class Class1
   Inherits Form1

   Public Sub Sample()
      MsgBox(sampleVariable)
   End Sub
End Class


Извините, если это слишком нуб-иш, чтобы спросить. Прошло уже некоторое время с тех пор как я использовал программное обеспечение ООП

Что я уже пробовал:

В Form1 как я должен вызвать Sample() из Class1? Так и должно быть:
Dim c As New Class1
c.Sample()

или
Dim c = Class1
c.Sample()

или просто
Class1.Sample()


Эти 3 работы мне просто интересно, какой из них правильный, так как в настоящее время в Google нет решения для этого.

2 Ответов

Рейтинг:
1

Dave Kreskowiak

Ты бы никогда так не поступил. Form1 никогда не должен создавать экземпляр Class1, так как Class1 наследуется от Form1.

Родительский класс form1 должен предоставлять все, что нужно всем дочерним классам, наследующим от Form1, в каждом дочернем классе. Родитель никогда не должен создавать или знать что-либо о каких-либо дочерних классах.


Рейтинг:
0

Richard MacCutchan

Зачем вы создаете объект класса Class1 внутри класса form1? Class1 уже является дочерним элементом Form1, поэтому наследует все его свойства.