科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件体验Visual Basic.Net的继承和重载

体验Visual Basic.Net的继承和重载

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在这个实践练习中,你将会建立一个简单的Visual Basic .NET应用程序。

作者:佚名 来源:yesky 2007年11月11日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
继承实例2

  这个例子进一步的说明了继承。

  1. 单击File,单击New,单击Project 打开新的Project 窗口。

  2. 在Project Types栏里,单击Visual Basic Projects,在Templates 栏里,单击Empty Project.

  3. 单击OK。

  4. 在工程中增加一个新的类:在Project菜单,单击Add Class。

  5. 在Name栏里,输入A.vb。

  6. 单击Open。一个空的Class出现。

  7. 将以下代码添加到Class A之上:

Imports System
Imports System.Console

  8. 增加以下代码完成class A:

Class A
Public Overridable Sub F()
Console.WriteLine("A.F")
End Sub
End Class

  9. 在Class A之下增加以下代码:

Class B
Inherits A
Public Overrides Sub F()
 Console.WriteLine("B.F")
End Sub
End Class
Class C
Inherits B
Public Shadows Overridable Sub F()
 Console.WriteLine("C.F")
End Sub
End Class

Class D
Inherits C
Public Overrides Sub F()
 Console.WriteLine("D.F")
End Sub
End Class

  在以下的代码段,你声明了四个对象,并且调用他们的方法看结果:

Class Test
Shared Sub Main()
Dim d As New D()
Dim a As A = d
Dim b As B = d
Dim c As C = d
a.F()
b.F()
c.F()
d.F()
End Sub
End Class

  10. 按 F5 执行应用程序。Output出现,结果如图3所示:


           图三. 继承实例2的输出结果


  注意 在class A 中有一个可以被override方法。在class B 有一个override方法。Class A 和class B 和前一个实例非常相似。Class B 继承class A 并且Override了方法F,另外改变了方法 F。 a.F() 和b.F() 都调用B.F,因为class A方法 F 已经被class B 的方法 F Override。

  在class C 中,方法F被声明为既是一个可以被override方法也是一个shadow 方法。这意味着 这个方法在编译时屏蔽了基类的方法 F,同时它可以被class C的子类Override。Class D 继承class C。class D 中有一个override 方法,它改变了class C 方法 F在运行时的执行。这就是c.F() 和d.F() 都调用 D.F的原因。

  因为方法可以屏蔽(Shadow)被继承的方法, 所以在一个类中可以包含多个具有相同的signature(即函数名,参数和返回值相同)的overridable 方法而不会引起歧义。因为除了那个被直接继承的基类方法外,其他所有的基类的方法都被隐藏而不可访问,从而没有名字冲突。

  如果要调用shadowed overridable 方法,我们可以把类D的实例转为其基类(在本例中A和B)的实例来调用它。

  结语

  当你不看工程文件时,关闭所有的窗口。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章