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

封装|继承

 
封装就是把各种方法和变量合并到一个类,用这个类代表某个对象为完成一定的任务所能保存的范围以及它能执行的操作。

继承就是根据现有类的方法和成员变量生成新的类的功能

多态就是对象随着程序执行而使其形式发生改变的能力。

抽象就是在暂时忽略对象的具体细节的功能。

在类中,构造器的方法使简化类的成员变量的初始化处理,当用继承从一个类构造另一个类的时候,会有两套构造器发生作用,即基类构造器和派生类构造器

例如:

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 Sub
End 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 Sub
End Class

.net环境中的所有类都是从system.object类派生来的,在覆盖基类函数和子例程的时候必须把overrides放在方法的定义中,在派生类覆盖基类定义之前,基类也必须声明它的方法定义是可覆盖的,即在方法定义中放入关键字overrides,这种能够被派生类覆盖的方法叫虚拟函数。

时间: 2024-11-08 19:19:55

vb.net类的封装,继承,多态,抽象之一的相关文章

C语言设计模式-封装-继承-多态

         快过年了,手头的工作慢慢也就少了,所以,研究技术的时间就多了很多时间,前些天在CSDN一博客看到有大牛在讨论C的设计模式,正好看到了,我也有兴趣转发,修改,研究一下. 记得读大学的时候,老师就告诉我们说,C语言是一门面向过程的语言,C++,java,C#是面向对象的语言.C++有三个最重要的特点,即继承.封装.多态.等到后来随着编码的增多和工作经验的积累,我也慢慢明白了面向对象的含义.可是,等我工作以后,使用的编程语言更多的是C语言,这时候我又想能不能把C语言变成面向对象的语言

PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)_php技巧

本文实例讲述了PHP面向对象的特性.分享给大家供大家参考,具体如下: Demo1.php <?php header('Content-Type:text/html; charset=utf-8;'); //创建一个电脑类 class Computer { //什么叫做类内,就是创建类的花括号内的范围叫做类内,其他地方则类外. //public 是对字段的公有化,这个字段类外即可访问,赋值和取值 public $_name = '联想'; } $computer = new Computer();

PHP类的封装与继承详解_php技巧

封装        把成员方法和成员属性封装到类中,隐藏属性和方法实现的细节,通过public.protected.private等限定类成员的访问权限,数据被保护在内部,只通过被授权的成员方法才可以操作,尽可能的对成员进行封装. public:方法或者属性在任何作用域下都可以访问到,而且是默认的,如果没有为一个属性或方法指定访问修饰符,它将是public.protected:本类和子类可以访问,外部对象不可以调用.private:只能在本类访问,子类与外部对象都不可能调用.经过private标

VB.Net中文教程(3) 继承与封装性

封装|继承|教程|中文 1. 继承与封装性(Encapsulation)1.1 公用与私有数据 前面已介绍「封藏性」(Encapsulation) 之观念.即是﹕类别内所定义之资料成员﹐只限于程序成员才能存取之.现在所面临之问题为﹕子类别能否直接存取父类别之资料呢﹖就如同﹕儿女从父母亲继承了财产﹐但能否取用或卖掉继承而来的财产呢﹖如果可以﹐显然违背了「封藏性」之理想.如果不行﹐显然带给程序员莫大之限制.理论上﹐百分之百的封藏性最为完美﹔但应用上﹐若给予子类别若干优待﹐能提高程序之弹性及效率.为了

【C/C++学院】0804-C语言和设计模式(继承、封装、多态)

C++有三个最重要的特点,即继承.封装.多态.我发现其实C语言也是可以面向对象的,也是可以应用设计模式的,关键就在于如何实现面向对象语言的三个重要属性. (1)继承性 1.  typedef struct _parent   2. {   3.      int data_parent;   4.    5.  }Parent;   6.    7.  typedef struct _Child   8. {   9.      struct _parent parent;   10.    i

php函数、类和对象以及类的封装、继承、类的静态方法、静态属性

原文:php函数.类和对象以及类的封装.继承.类的静态方法.静态属性 1.函数     php内置函数可以直接使用,如果没有安装php扩展即可     自定义函数 //函数function 函数名 function dump($var = null){ //支出默认参数值 echo '<pre/>'; var_dump($var); } 2.类(class)和对象( new Obj) <?php //定义一个人的类,现在还不是对象 class Person { //私有属性 privat

深入浅析SQL封装、多态与重载_MsSql

面向对象 1.类:众多对象抽象出来的 2.对象:类实例化出来的 3.类的定义 关键字 class 4.类里面包含 成员变量 成员属性 成员方法 5.面向对象三大特性 (1)封装 目的:保护类,让类更加安全. 做法:让类里面的成员变量变为私有的,做相应的方法或者属性去间接的操作成员变量 封装成员方法来间接操作类里面的成员变量 使用成员属性来间接访问类里面的成员变量 访问修饰符 private 私有的 只能在该类中访问 protected 受保护的 只能在该类和它的子类中访问 public 公有的

深入浅析SQL封装、多态与重载

面向对象 1.类:众多对象抽象出来的 2.对象:类实例化出来的 3.类的定义 关键字 class 4.类里面包含 成员变量 成员属性 成员方法 5.面向对象三大特性 (1)封装 目的:保护类,让类更加安全. 做法:让类里面的成员变量变为私有的,做相应的方法或者属性去间接的操作成员变量 封装成员方法来间接操作类里面的成员变量 使用成员属性来间接访问类里面的成员变量 访问修饰符 private 私有的 只能在该类中访问 protected 受保护的 只能在该类和它的子类中访问 public 公有的

JS类的封装及实现代码

JS类的封装及实现代码 js并不是一种面向对向的语言, 没有提供对类的支持, 因此我们不能像在传统的语言里那样 用class来定义类, 但我们可以利用js的闭包封装机制来实现js类, 我们来封装一个简的Shape类. js并不是一种面向对向的语言, 没有提供对类的支持, 因此我们不能像在传统的语言里那样 用class来定义类, 但我们可以利用js的闭包封装机制来实现js类, 我们来封装一个简的Shape类.  复制代码代码如下: function ShapeBase() {  this.show