当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > vb.net类的封装,继承,多态,抽象之一

ASP.NET
Visual Studio.Net 内幕(7)
.Net 2.0 原汁原味读取注册表
ASP.NET 2.0中预设的cookie
ASP.NET:一段比较经典的多线程学习代码
ASP.NET2.0服务器控件之自定义状态管理
Asp.net给站点某目录增加Aspnet用户
ASP.NET技巧:请求网址并解析返回的html
在Asp.net用C#建立动态Excel
ASP.NET2.0:页面中链入的CSS、js文件带中文时需注意
ASP.NET技巧:数据岛出到Excel最为简易的方法
第一次用.net2.0 LOGIN登陆控件的困惑和解决方法
在ASP.net中保存/取出图片入/从SQL数据库
ASP.NET技巧:做个DataList可分页的数据源
在.NET中利用委托实现窗体间通信
在.NET2.0中使用自定义事务操作
解决 ASP.NET中目录访问权限的问题
ASP.Net防止刷新自动触发事件的解决方案
白刃之战:PHP vs. ASP.NET(节选)-架构比较
C#中使用SendMessage
提取HTML代码中文字的C#函数

ASP.NET 中的 vb.net类的封装,继承,多态,抽象之一


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 225 ::
收藏到网摘: n/a


封装就是把各种方法和变量合并到一个类,用这个类代表某个对象为完成一定的任务所能保存的范围以及它能执行的操作。
继承就是根据现有类的方法和成员变量生成新的类的功能
多态就是对象随着程序执行而使其形式发生改变的能力。
抽象就是在暂时忽略对象的具体细节的功能。
在类中,构造器的方法使简化类的成员变量的初始化处理,当用继承从一个类构造另一个类的时候,会有两套构造器发生作用,即基类构造器和派生类构造器
例如:
Public Class Form1 Inherits System.Windows.Forms.Form
#Region " Windows 窗体设计器生成的代码 "
#End Region Class base Public Sub New() MsgBox("base class running") End Sub End Class Class derived Inherits base Public Sub New() MsgBox("derived class running") End Sub End Class
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim s As New derived End SubEnd Class
如果基类构造器不需要参数,派生类执行的时候,vb.net自动调用基类构造器,但是如果基类构造器要求参数,那么派生类就必须显式调用基类构造器,同时向基类构造器传递相应的参数。
因为所有的类都使用方法new作为构造器名,所以派生类就不能简单的调用方法new,vb.net无法确定需要调用那个new方法,在派生类调用方法new时,必须在前面加上关键字mybase,如:mybase.new
在派生类构造器中,调用基类构造器的语句必须放在第一行,否则产生语法错误,如果不需要参数,可以省略,但为了提高代码的可读性,一般还是显式的调用mybase.new

继承和析构器方法
vb.net不能象调用基类构造器函数那样自动调用基类析构器,如下例:
Public Class Form1 Inherits System.Windows.Forms.Form
#Region " Windows 窗体设计器生成的代码 "
#End Region Class a Public Sub New() MsgBox("class a new") End Sub Protected Overrides Sub finalize() MsgBox("class a finalize") End Sub End Class Class b Inherits a Public Sub New() MsgBox("class b new") End Sub Protected Overrides Sub finalize() MsgBox("class b finalize") MyBase.Finalize() End Sub End Class Class c Inherits b Public Sub New() MsgBox("class c new") End Sub Protected Overrides Sub finalize() MsgBox("class c finalize") MyBase.Finalize() End Sub End Class
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim s As New c End SubEnd Class.net环境中的所有类都是从system.object类派生来的,在覆盖基类函数和子例程的时候必须把overrides放在方法的定义中,在派生类覆盖基类定义之前,基类也必须声明它的方法定义是可覆盖的,即在方法定义中放入关键字overrides,这种能够被派生类覆盖的方法叫虚拟函数。