接口继承
创建抽象类时,请使用关键字 interface 而不是 class。为接口命名,然后定义需要子类实现的所有属性和方法。这是因为基类中没有可以实现的属性和方法,它只包含一般数据,而不包含方法。您所创建的只是一个合约,它规定所有使用此接口的子类都必须遵循一定的规则。
1. 现在,请在已创建的项目中添加一个新类。
2. 从 visual studio 菜单中,单击 project(项目),然后单击 add class(添加类)。
3. 在类中添加以下代码:4. interface person
5. property firstname() as string
6. property lastname() as string
7.
8. sub print()
9. sub talk()
end interface
您会发现,您定义属性和子过程的方法与您通常定义这些属性和过程的方法一样。唯一的差别在于,您没有为它们编写任何代码。现在来看看如何在类定义中使用此接口。
10. 在上一步骤创建的类文件中添加以下代码:11. public class employee
12. implements person
13.
14. private mstrfirstname as string
15. private mstrlastname as string
16.
17. property firstname() as string _
18. implements person.firstname
19. get
20. return mstrfirstname
21. end get
22. set
23. mstrfirstname = value
24. end set
25. end property
26.
27. property lastname() as string _
28. implements person.lastname
29. get
30. return mstrlastname
31. end get
32. set
33. mstrlastname = value
34. end set
35. end property
36.
37. sub print() implements person.print
38. ' 在此处添加一些代码
39. end sub
40.
41. sub talk() implements person.talk
42. ' 在此处添加一些代码
43. end sub
end class
在 employee 类定义之后的第一行是 implements person。此关键字表示您要遵守 person 接口中定义的合约。现在您可以定义该合约中的所有属性和方法。在每一个 property 语句后面,都必须包含 implements 关键字,并且必须指定接口的名称和您正在使用的方法/属性的名称(两个名称之间有一个点 [.])。visual basic .net 将跟踪每一个接口,在所有接口创建完毕之前,您不能编译应用程序。
如果要运行代码,则需要创建相应的子过程,因为在上面的示例中这些子过程被保留为空。创建所有子过程后,您就可以与您通常创建并使用任何其他对象一样,声明并使用新的 employee 对象了。 选择要使用的继承类型
有时候很难决定到底是使用实现继承还是使用接口继承,很多情况下,可能两种继承都会用到,但都只涉及一小部分。例如,您可能需要在 line 类中添加必须被子类覆盖的方法定义,在过程定义中使用 mustoverride 关键字即可实现此操作。public mustoverride sub init()
将此定义添加到类中以后,其作用类似于一个接口。在子类中,必须定义 init 方法,并且该方法必须使用 overrides 关键字。以下是如何定义 init 方法的示例:public overrides sub init()
mstrdelim = " "
mstrline = "测试行"
end sub
同样,请记住使用 overrides 关键字。该关键字用于通知编译器此方法将覆盖父类中的 init 方法。
注意: microsoft .net 框架的联机帮助中提供了设计指南,可以帮助您决定要使用的继承类型。 阻止继承
在某些情况下,您可能不希望其他类继承您的类。如果是这样,您可以使用关键字 notinheritable 来阻止类的继承。public class notinheritable employee
' 类定义
end class
visual basic 6.0 以来的新增功能
使用 visual basic .net,您可以继承 .net 框架包含的所有类。您可以创建自己的类,使这些类继承现有的类;并通过对代码进行简单更改来添加或删除功能。 总结
本文介绍了如何继承基类,如何向基类添加其他属性,以及如何使用 overrides 关键字来替换基类中定义的功能。还介绍了使用 mybase 关键字调用基类中的方法,从而扩展基类的功能。虽然继承并不是对所有的应用程序都适用,但如果使用正确,继承将成为一种非常强大的工具。