我们都知道,面向对象语言的三大特征是:封装、继承和多态。而重写和重载是多态的两种表现形式。多态,顾名思义,就是指多种形态。而重写和重载正好体现了这一点。现在我们以 VB.NET 语言来说明两者的区别。
网站建设哪家好,找创新互联建站!专注于网页设计、网站建设、微信开发、小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了扎赉诺尔免费建站欢迎大家使用!
重写是发生在父类与子类之间的关系。具体来讲就是子类可以重写父类的现有的方法。它要求子类的方法名称及参数必须与父类完全一致。比如吃饭,父亲可以吃两碗面,孩子同样也是吃面,却只能吃一碗。
重载则主要是发生在同一个类当中的,它通过多个名称相同的方法,但方法参数不相同,或者方法返回类型不相同来加以区别。其中,方法参数不相同包括以下几种情况:参数的个数不相同,参数的类型不相同,参数的对应位置不相同。需要说明的是,重载同样可以应用到父类与子类当中。即子类重载了父类的方法。
重写:
在 VB.NET 中,重写汲及到的关键字有:
OverRidable: 在父类中声明的可以在子类中重写的方法。
OverRides: 在子类中声明的要重写父亲中可重写的方法。
MustOverRide: 在父类中,表示这个方法必须在子类中重写。此时,该类必须声明为抽象类。
NotOverridable: 如果当前类还有子类,那么,在其子类中,该方法不允许被重写。
重载:
在 VB.NET 中,重载用到的关键是 OverLoads。
这里需要说明几点:
1. 对于在同一类当中,一组名称相同的方法或函数重载时,可以加关键字 OverLoads 或者不加。但如果其中有一个方法加上,那同组其它方法也必须加该关键字。
2. 如果该方法是重载父类中的方法。那么必须加 OverLoads 关键字。
3. 如果两个同名函数仅返回类型不相同,则它们不能重载,即必须在参数上有所不同。
顾名思义,new就是给变量赋值一个新的对象
dim不加new就是说变量是XX类型的,但它不是一个真正的XX对象。如果给这个变量赋值的话,实际上就是把某一对象的指针存到变量里,它依旧不是一个对象
一个普通的类,里面有一些数据,你要弄一个对象的话,需要初始化所有类中的数据并调用构造函数。这时候我们就用new了。如果你不用new,然后直接使用的话,会引发null异常
当然上面的讨论不包括Integer、String、Long这样的数值类型,这些不能用new
replace有重载方法,可以替换1~任意可能个
别用string的replace,直接用replace
是关键字。比如:SUB代表一个函数的开始,END SUB代表函数结束,函数主体语句就必须写在这两个关键字之间。CLASS类关键字,PRIVATE私有关键字,PUBLIC公用关键字,IF.....END IF是判断关键字,等等。建议找本基础书看一看。
VB.NET中的Default关键字是用来声明类的默认属性的 默认属性可以直接使用“对象名(参数)”的形式来调用 而不用写出属性名
举个例子:
'先声明1个类
Public Class myclass
Dim a1 As Integer=1
Dim a2 As Integer=2
Default Public Property geta(ByVal x As Integer) As Integer
Get
If x=1 Then Return a1 Else Return a2
Set(ByVal value As Integer)
If x=1 Then a1=value Else a2=value
End Property
End Class
'这里的geta就是默认属性,后边在主函数里调用它
Public Class test
Shared Sub Main()
Dim obj As myclass=New myclass()
Console.WriteLine("{0} {1}",obj(1),obj(2))
End Sub
End Class
最后输出结果为:1 2
也就是说可以直接使用obj(1)这样的格式 而不用使用obj.geta(1)这样的格式了
注意 默认属性必须至少带有1个参数
str1是数字类型而strrow是文字类型,所以出错。。
把str1转成string就可以了。。。