在*基类

时间:2018-02-14 09:57:28

标签: vb.net oop override

我了解如何使用VB的OverridableOverrides,在调用类的方法时获得与c#的virtual类似的功能。但是,请考虑下面的c#控制台代码,该代码从 类本身调用一个重写方法:

class Program {
  static void Main(string[] args) {
    new test();
    new test2();
    Console.ReadKey();
  }
}

public class test {
  public test() {
    hello();
  }
  public virtual void hello() {
    Console.WriteLine("hello from base method");
  }
}

class test2 : test {
  public override void hello() {
    Console.WriteLine("hello from overridden method");
  }
}

我可以预见,在c#中得到的结果是:

  

你好基础方法
  你好,来自重写方法

问题是,我无法弄清楚如何在VB.NET中复制此功能。请注意,hello()是从基类代码中的调用的,该代码运行重写的方法。这是我在VB中无法实现的目标。

无论我在VB中尝试什么,总是调用基类的 hello(),而不是重写的hello()。

1 个答案:

答案 0 :(得分:2)

班级考试:

Public Class Test

    Public Sub New()
        Hello()
    End Sub

    Public Overridable Sub Hello()
        Console.WriteLine("hello from base method")
    End Sub

End Class

Class Test2:

Public Class Test2
    Inherits Test

    Public Overrides Sub Hello()
        Console.WriteLine("hello from overridden method")
    End Sub

End Class

Sub Main:

Sub Main()
    Dim x As New Test
    Dim y As New Test2
End Sub