VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > VB.net教程 >
  • VB.NET中 overloads, overrides, shadows的区别是什么


大家好,今天我们要来一起学习一下VB.NET中的overloads、overrides和shadows三个关键字的区别。你知道它们之间的区别吗?让我们一起来看看吧!
 
overloads
 
首先,让我们来了解一下overloads。overloads是VB.NET中用于重载函数的关键字。重载函数是指在同一程序集中,可以定义多个名称相同但参数列表不同的函数。通过使用不同的参数列表,编译器会根据调用时提供的参数自动选择适合的函数。例如:
 
 

Public Sub foo(ByVal param1 As Integer)
    ' do something
End Sub
 
Public Sub foo(ByVal param1 As String)
    ' do something else
End Sub
上面的例子中,foo函数被重载了两次,一次接受一个整数参数,另一次接受一个字符串参数。当你调用foo函数时,编译器会根据你提供的参数类型自动选择适合的函数。
 
overrides
 
接下来,我们来看看overrides。overrides是用于覆盖基类中方法的关键字。在派生类中,如果你想覆盖基类中的方法,但同时又想保留原有的实现,你就可以使用overrides关键字。例如:
 
 

Public Class BaseClass
    Public Overridable Sub foo()
        Console.WriteLine("BaseClass.foo")
    End Sub
End Class
 
Public Class DerivedClass
    Inherits BaseClass
 
    Public Overrides Sub foo()
        Console.WriteLine("DerivedClass.foo")
    End Sub
End Class
上面的例子中,DerivedClass继承了BaseClass,同时覆盖了它的foo方法。当你在DerivedClass的实例上调用foo方法时,将输出“DerivedClass.foo”,而不是“BaseClass.foo”。
 
shadows
 
最后,我们来看看shadows。shadows是用于隐藏基类中方法的关键字。与overrides不同,shadows不会在派生类中重新实现基类中的方法,而是将其隐藏起来,使得在派生类中无法访问该方法。例如:
 
 

> Public Class BaseClass
    Public Overridable Sub foo()
        Console.WriteLine("BaseClass.foo")
    End Sub
End Class
 
Public Class DerivedClass
    Inherits BaseClass
 
    Public Shadows Sub foo()
        Console.WriteLine("DerivedClass.foo")
    End Sub
End Class
上面的例子中,DerivedClass继承了BaseClass,并使用shadows关键字隐藏了它的foo方法。当你在DerivedClass的实例上调用foo方法时,将输出“DerivedClass.foo”,而无法访问BaseClass中的foo方法。但是,如果你在DerivedClass中重新实现了foo方法(不使用shadows关键字),那么该方法将会覆盖BaseClass中的foo方法。

最后,如果你对python语言还有任何疑问或者需要进一步的帮助,请访问https://www.xin3721.com 本站原创,转载请注明出处:https://www.xin3721.com/ArticleVBnet/vb47680.html

相关教程