由于名字上的相似,我总是搞不清重载和重写的差别,我曾经用过得到底是重载还是重写我也不清楚.这两个放在一起比較的原因就是,名字上总是混为一谈.
如今总结如今区分一下还为时不晚,也两个东西可能没有什么对照性,单单仅仅是名字相似,可是就是由于名字相似。当自己用的时候总是说,恩。这里用到了重载,哦,不是是重写。哎呀。知道即可了,爱叫啥叫啥吧。
方法重载:提供了创建同名的多个方法的能力,可是这些方法须要使用不同的參数类型.
注意:方法重载的时候,两个方法名同样,可是參数类型或个数必需要有所不同.长处:能够在不改变原方法的基础上新增功能,多以它的可扩展能力好.
比如:
<span style="font-family:KaiTi_GB2312;font-size:18px;"> class Cat { Private string name=""; //声明Cat类的是由字符变量name Public cat(string name) //定义Cat类的构造方法,參数是输入一个字符串 { This.name=name; //将參数赋值给私有变量name } Public Cat() //将构造方法重载 { This.name="无名"; } Public string Shout() { Return "我的名字叫"+name+"喵"; } } </span>
这样执行出来以后就是:我的名字叫无名喵。
理解了重载,接下来就是重写了。首先要知道什么是重写。
重写:子类能够将父类实现替换为他自己的实现。这种方法就是重写。
以下就来详细再回想一下重写吧。
在机房重构里,组合查询窗口有好几个。所以一样的代码太多了,爽快一下就用了一下模板方法。然而这里就用到了重写。
先了解一下模板方法,小蔡说过:没有学过设计模式,那么对于多态。乃至面向对象的理解多半都是肤浅和片面的。
模板方法:
定义一个操作中的短发的骨架,而将一些步骤延迟到子类中,使得子类能够不改变一个算法的结构就可以冲定义该算法的某些特定步骤。
所以结合设计模式去理解会更好的。
接着谈我的机房重构,由于组合查询的几个窗口的同样之处有非常多,所以代码也是一样的,太多的反复代码必定是不好的,所以我就建立一个父窗口作为模板,这样就把不变的仅仅写一遍。在子类中实现与父类不同的方法。
其有用的就是继承。
子类以自己的方式实现父类的功能(方法重写)
比如:我们在父窗口里写好同样部分的代码,可是每一个窗口须要的数据库的表都不一样。这怎么办。就在父窗口里面定义好虚函数。
<span style="font-family:KaiTi_GB2312;font-size:18px;">Protected Overridable Function GetTable() As String Return "" End Function </span>
在子窗口里重写,比方学生基本信息里面。须要获取T_Student表,就在子窗口里重写子。
<span style="font-family:KaiTi_GB2312;font-size:18px;"> '定义虚函数的GetTable,获取不同的数据库的表名 Protected Overrides Function GetTable() As String <span style="white-space:pre"> </span>groupInquire.GetTable = "T_Student" '获得继承窗口所须要的表 Return groupInquire.GetTable End Function </span>
这就是方法重写,通过总结,事实上这两个东西有啥可比性啊,就由于名字相似,总是混为一谈。这里的混为一谈是当自己用的时候不确定自己用的叫什么。总是含糊的过去了。这俩个东西差距可大,不能含糊,总结一下。区分一下。自己以后就能够肯定的回答这是重载还是重写了。
事实上。没有什么是不能放到一起比較着学习的。嘿嘿。
懂了是关键啊。