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:能否将您试图从继承类访问的方法/属性添加到问题中?这将更容易看出问题出在哪里。酷,它现在正在工作。不知道我在做什么,这给了我这些问题。潮湿!