Унаследование класса от другого класса - PullRequest
0 голосов
/ 12 августа 2010

У меня есть класс FileDoc

Public Class FileDoc
Inherits BaseClass

Public Sub DeleteDoc()

dim catId as integer = Cat_ID

End Sub

    a bunch of properties...
End Class

И у меня есть другой класс ...

Public Class BaseClass

Private _Cat_ID As Integer
Public Property Cat_ID() As Integer
    Get
        Return _Cat_ID
    End Get
    Set(ByVal value As Integer)
        _Cat_ID = value
        AssignAllInfo()
    End Set
End Property

Private _Docs As List(Of FileDoc)
Public Property Docs() As List(Of FileDoc)
    Get
        Return _Docs
    End Get
    Set(ByVal value As List(Of FileDoc))
        _Docs = value
    End Set
End Property

У меня такой вопрос, поскольку FileDoc происходит из BaseClass, как я могу получить доступ к значениямиз BaseClass, когда я кодирую в классе FileDoc.Как и мой пример в sub DeleteDoc (), я пытаюсь получить доступ к Cat_ID базового класса, к которому принадлежит этот FileDoc.

Добавление наследования не передает значения в класс, только свойства.

Спасибо заранее

1 Ответ

0 голосов
/ 12 августа 2010

Наследование не делает этого. Имейте в виду, что вы работаете с классами, которые являются своего рода шаблоном для вашего объекта. Вы смешиваете это с экземплярами , которые являются экземпляром вашего класса, который содержит данные.

Например, когда вы создаете экземпляр FileDoc, вы получаете пустой объект, содержащий поля как BaseClass, так и FileDoc. FileDoc не знает, есть ли другие экземпляры BaseClass, которые содержат данные (и не должны). Подумайте об этом так: если у вас было несколько экземпляров BaseClass, а затем вы создали экземпляр класса FileDoc, какой экземпляр BaseClass следует использовать для заполнения данных?

Есть два способа сделать то, что ты хочешь сделать. Во-первых, вы можете представить, что ваш BaseClass абстрактный (не уверен, как это сделать в VB). Таким образом, вы не будете создавать экземпляры BaseClass. BaseClass существует исключительно для предоставления базы, от которой могут наследовать другие классы. Итак, вам нужно создать экземпляр FileDoc, а затем заполнить его нужными вам данными.

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

Выберите метод, подходящий для вашей ситуации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...