Vb.net 如何从继承的类访问类

Vb.net 如何从继承的类访问类,vb.net,class,Vb.net,Class,我有两门课: class class2 inherits class1 public sub modify() 'modify property of class1 end sub end class 如何在class2的子类中修改class1?您询问的是属性,请注意,继承的类只能看到受保护的和公共的属性。 重写父类中的现有函数时,需要使用MyBase关键字。其他受保护的或公共属性或函数可以正常访问,无需任何特殊关键字。您只需调用它即可。例如: Public Class class1

我有两门课:

class class2
inherits class1

public sub modify()

'modify property of class1

end sub

end class

如何在class2的子类中修改class1?

您询问的是属性,请注意,继承的类只能看到
受保护的
公共的
属性。
重写父类中的现有函数时,需要使用
MyBase
关键字。其他
受保护的
公共
属性或函数可以正常访问,无需任何特殊关键字。

您只需调用它即可。例如:

Public Class class1
  Private _Value As String = String.Empty

  Property Value() As String
    Get
      Return _Value
    End Get
    Set(ByVal value As String)
      _Value = value
    End Set
  End Property

End Class

Public Class class2
  Inherits class1

  Public Sub modify()
    Value = "modified"
  End Sub

End Class
为了证明它是有效的:

Dim c2 As New class2
c2.modify()
MessageBox.Show(c2.Value)

我想在上面关于访问基类信息的评论中添加的一个技巧是,如果基类没有默认构造函数,或者想要使用特定的构造函数,那么这是使用Mybase的好机会。在此场景中,在执行任何其他操作之前,必须调用构造函数

Public Class MyClass
  Inherits baseClass
  Public Sub New()
   mybase.new("Oranges")
  End Sub
End Class

Public Class baseClass
Private _someVariable as String
Public Sub New(byval passedString as string)
   _someVariable = passedString
End Sub
End Class

我缺少的是从class2Yes中指向class 1的正确关键字,但是如果您将您的属性声明为受保护的
公共的
,您甚至不必使用特殊关键字,因为
Class2
继承了它,您将看到,这就像属性实际上是在
Class2
中声明的一样。如果您包含类1的定义,以了解您希望在类2的Modify方法中执行的操作,这可能会有所帮助。正如我所说,您不需要将MyBase用于公共和受保护的属性,只要尝试访问它们,就好像它们是在class2中声明的一样,这也不起作用。当然我以前也试过。错误是:如果没有来自的a/m共享方法/成员类的显式实例,则无法对类的实例成员执行错误1。@Delcon:能否将您试图从继承类访问的方法/属性添加到问题中?这将更容易看出问题出在哪里。酷,它现在正在工作。不知道我在做什么,这给了我这些问题。潮湿!