vb.net重写基类方法 vbnet datagridview 重绘

vb.net派生类重写基类函数的问题?vb.net的MyBase(mybase)与java的super能基本对应 。
下图是一个例子:
vb.net如何重写函数?比如重写ToString 。Dim a As Integer = 1 MessageBox.Show(a.ToString) '重写……Public Class Form1
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim a As New month(1)
MessageBox.Show(a.ToString)
End Sub
End Class
Public Class month
Dim m As Integer
Public Sub New(i As Integer)
m = i
End Sub
Public Overrides Function ToString() As String
If m = 1 And m = 12 Then
Return Choose(m, "一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二") + "月"
Else
Return m.ToString
End If
End Function
End Class
在vb.net类中Public Overrides Function有什么作用?重写基类的方法啊 。你可以重写别人的类的某些方法、属性,来实现自己的目的 。比如你拿到一辆车,你觉得他的颜色不好看,随时就涂成你要的颜色 。车的性能是没有多大变化的 , 不过改了他的颜色,达到了自己的目的 。
关于.net里面重载 , 重写和覆盖的区别重写是指重写基类的方法vb.net重写基类方法,在基类中的方法必须有修饰符virtualvb.net重写基类方法,而在子类的方法中必须指明override 。
格式:
基类中:
public virtual void myMethod()
{
}
子类中:
public override void myMethod()
{
}
重写以后,用基类对象和子类对象访问myMethod()方法 , 结果都是访问在子类中重新定义的方法 , 基类的方法相当于被覆盖掉了 。
重载
用于在给定了参数列表和一组候选函数成员的情况下,选择一个最佳函数成员来实施调用 。
public void test(int x,int y){}
public void test(int x,ref int y){}
public void test(int x,int y,string a){}
重载特征:
I.方法名必须相同
II.参数列表必须不相同,与参数列表的顺序无关
III.返回值类型可以不相同
【vb.net重写基类方法 vbnet datagridview 重绘】=========================
但如果有泛型,就要注意了vb.net重写基类方法!
多态
c#的多态性主要体现在类的继承上:
子类继承父类的时候,可能出现同名但方法定义不同的情况,
所以在子类中会将原方法覆盖,实现自身的要求
1 /* 2Function: override 3 */ 4 using System; 5 namespace TestOverride 6 { 7class Employee 8{ 9//父类虚方法10public virtual void CalculatePay()11{12Console.WriteLine("Employee");13}
14}1516//子类继承重写CalculatePay()方法17class SalariedEmploy : Employee18{19public override void CalculatePay()20{21Console.WriteLine("Salary");22}23}2425class AppPay26{27public static void Main(String[] args)28{29//父类创建实例30Employee employee1 = new Employee();31employee1.CalculatePay();//Employee3233//子类赋值给父类34Employee employee2 = new SalariedEmploy();35employee2.CalculatePay();// Salary3637//子类创建实例38SalariedEmploy employee3 = new SalariedEmploy();39employee3.CalculatePay();//Salary4041}
42}43 }44 /*45 Out:46 Employe47 Salary48 Salary49 */
View Code
*****************************************************************************************************************
C#之重载与覆盖
overload:重载指的是同一个类中有两个或多个名字相同但是参数不同的方法 , (注:返回值不能区别函数是否重载) , 重载没有关键字 。
override:过载也称重写是指子类对父类中虚函数或抽象函数的“覆盖”(这也就是有些书将过载翻译为覆盖的原因),但是这种“覆盖”和用new关键字来覆盖是有区别的 。

推荐阅读