-
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函数时,编译器会根据你提供的参数类型自动选择适合的函数。' do something
End Sub
Public Sub foo(ByVal param1 As String)
' do something else
End Sub
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”。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
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方法。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
最后,如果你对python语言还有任何疑问或者需要进一步的帮助,请访问https://www.xin3721.com 本站原创,转载请注明出处:https://www.xin3721.com/ArticleVBnet/vb47680.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式