转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
VB.net入门(7):类~继承         ★★★★

VB.net入门(7):类~继承

作者:闵涛 文章来源:闵涛的学习笔记 点击数:668 更新时间:2009/4/23 18:59:58

把类再去分类,就出现了继承。
以Human为例,人有男女之分,男人和女人都是从“人”继承来的。我们建立一个Male类和一个Female类:
public class Male
    inherits Human
end class

public class Female
    inherits Human
end class


这里Inherits是关键字,表示“继承于...”。

男人也是人,所有人的特质,吃饭睡觉等等,在男人身上都有。所以我们不必再去给Male类定义Eat那些东西了。我们可以直接把LaoWang定义成一个男人:
dim LaoWang as Male

运行一下就会发现,LaoWang = new Human("老王", "男", 177)这句话行不通了。因为LaoWang已经不是一个笼统的“人”,我们要改成:
LaoWang = new Male("老王", "男", 177)

但是Male没有带参数的构造函数,我们就要加上去:
sub New(Byval Name as string, byval Gender as String, byval Stature as integer)
    MyBase.New(Name, "男", Stature)
end sub

这里MyBase.New是调用Human的构造函数来构造自己。这里可以直接把参数传过去。而且不管传过来的Gender是什么,我们一律将其改为“男”。

男人和女人的区别在哪里呢?就是男人不能生小孩。所以我们可以在Male类中把Human里的Born函数重写一下,使其更适合Male。不过在这之前,我们要把Human中的Born函数加上一个修饰符overridable(可重写的):
public overridable function Born() as Human
    if Gender = "女" then
        return new Human("","",50)
    else
        return nothing
    end if
end function


然后我们在Male中重写Born函数。这里不用判断性别了,因为是在Male里头:
public overrides function Born() as Human
    Console.WriteLine("我使劲生,但就是生不出来啊~~")
    return nothing
end function


好了,下面是完整的演示代码。至于Female呢,你自己试着去写写看:
imports System

public module MyModule
    sub Main
        dim LaoWang as Male
        LaoWang = new Male("老王", "男", 177)
        AddHandler LaoWang.FallIll, AddressOf GoToHospital
        Console.writeline("{0}, {1}, 身高{2}厘米", _
                            LaoWang.Name, LaoWang.Gender, LaoWang.Stature)
        LaoWang.Born()
        LaoWang.Eat()      ''''这里引发事件
        Console.Read
    end sub
   
    sub GoToHospital(Byval Name as String)
        dim s as string
        s = Name & "被送到医院去了。"
        Console.WriteLine(s)
    end sub
end module

public class Human
    public Name as String
    public Gender as String
    public Stature as integer
   
    sub New(Byval Name as string, byval Gender as String, byval Stature as integer)
        me.Name = Name
        me.Gender = Gender
        me.Stature = Stature
    end sub
   
    sub New()     ''''不带参数的构造函数
    end sub
   
    public event FallIll(Byval Name as String)

    public sub Eat()
        raiseevent FallIll(me.Name)
    end sub

 public sub Sleep()
 end sub
 
 public sub SeeADoctor()
 end sub
   
    public overridable function Born() as Human
        if Gender = "女" then
            return new Human("","",50)
        else
            return nothing
        end if
    end function
end class

public class Male
    inherits Human
   
    sub New(Byval Name as string, byval Gender as String, byval Stature as integer)
        MyBase.New(Name, "男", Stature)
    end sub
   
    public overrides function Born() as Human
        Console.WriteLine("我使劲生,但就是生不出来啊~~")
        return nothing
    end function
end class

public class Female
    inherits Human
end class

但是这个世界是很复杂的。比如四边形当中有矩形,也有等边四边形。正方形呢,同时具有矩形和等边四边形的性质,照理说应该可以同时从两者中继承,也就是多重继承。不过VB.net不允许这么做。具体原因嘛,我说不太清。总之多重继承还有一些逻辑上的东西没解决,除了C++之外好像还没有其他语言敢用。


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台