我有一个朋友,他学习 VB.NET 时间还不是很长。这几天,他对面向对象编程中的接口突然产生了很大的兴趣。为了帮助他让他能够对接口有一个初步的、正确的认识,我写了下面的例子。同时,希望本例对目前还不是很了解接口的朋友有所帮助。
VB.NET接口范例
在这个例子中,我定义了一个名为 ISpeak 的接口,它其中包括了三个签名(请参见下面程序)。由于接口是代表一种约定或者说是一种规则,它并不包含这种约定或者规则的具体实现。所以,我们只需要在接口中定义签名即可。在该接口中,包括了三个成员签名,它们分别代表了属性、方法以及函数。
接下来,我又定义了三个类,分别是 Baby、Children 和 Adlut ,这个三类都实现了上述接口。并且,在每个类实现接口的成员时,都给出了具体的实现。
来看代码:
- '定义一个接口
- PublicInterfaceISpeak
- '仅定义签名,不包含任何实现
- ReadOnlyPropertyCanSpeak()AsBoolean'属性
- SubSpeak()'方法
- FunctionGetSpeakLevel()AsSpeakLevelEnum'函数
- EndInterface
- '说话水平枚举
- PublicEnumSpeakLevelEnum
- Bad'很差
- Ordinary‘一般
- Fluent'流利
- EndEnum
- PublicClassBaby:ImplementsISpeak'通过Implements关键字实现接口
- '以下是实现该接口的所有成员
- PublicReadOnlyPropertyCanSpeak()AsBooleanImplementsISpeak.CanSpeak
- Get
- ReturnFalse
- EndGet
- EndProperty
- PublicFunctionGetSpeakLevel()AsSpeakLevelEnumImplementsISpeak.GetSpeakLevel
- ReturnSpeakLevelEnum.Bad
- EndFunction
- PublicSubSpeak()ImplementsISpeak.Speak
- Console.WriteLine("(旁白):他是一个婴儿,还不会说话。")
- EndSub
- EndClass
- PublicClassChildren:ImplementsISpeak
- PublicReadOnlyPropertyCanSpeak()AsBooleanImplementsISpeak.CanSpeak
- Get
- ReturnTrue
- EndGet
- EndProperty
- PublicFunctionGetSpeakLevel()AsSpeakLevelEnumImplementsISpeak.GetSpeakLevel
- ReturnSpeakLevelEnum.Ordinary
- EndFunction
- PublicSubSpeak()ImplementsISpeak.Speak
- Console.WriteLine("哈哈,我是一个快乐的孩子!")
- EndSub
- EndClass
- PublicClassAdult:ImplementsISpeak
- PublicReadOnlyPropertyCanSpeak()AsBooleanImplementsISpeak.CanSpeak
- Get
- ReturnTrue
- EndGet
- EndProperty
- PublicFunctionGetSpeakLevel()AsSpeakLevelEnumImplementsISpeak.GetSpeakLevel
- ReturnSpeakLevelEnum.Fluent
- EndFunction
- PublicSubSpeak()ImplementsISpeak.Speak
- Console.WriteLine("OK,我是成年人了,不但能流利地说母语,还会说外语。")
- EndSub
- EndClass
- '程序入口点
- PublicClassAppStart
- SharedSubMain()
- Dimperson1AsNewBaby
- Dimperson2AsNewChildren
- Dimperson3AsNewAdult
- person1.Speak()
- person2.Speak()
- person3.Speak()
- Ifperson2.GetSpeakLevel>SpeakLevelEnum.BadThen
- Console.WriteLine("Person2的说话水平不算很差")
- EndIf
- Ifperson1.CanSpeakThen
- Console.WriteLine("Person1会说话")
- Else
- Console.WriteLine("Person1不会说话")
- EndIf
- Console.Read()
- EndSub
- EndClass
在 VS2005/2008 中建立一个“控制台项目”项目,将默认的 Module1.vb 删除,在该项目中添加一个类,将上述代码复制到这个类中覆盖原有内容,即可运行调试。
VB.NET接口范例学习经验
关于接口,学习总结如下:
1、定义接口名,应按照惯例,将接口名的第一个字母命名为 I,如上例中的 ISpeak,这样做的目的是见名知义,原因是因为接口的英语单词是 Interface;
2、由于接口中的成员签名必须在实现该接口的类中给出其具体实现,所以它们前面不用加访问级别修饰符(Public、Privated 等);
3、类通过 Implements 关键字实现接口;
4、一个类要实现一个接口,就必须实现该接口中定义的所有成员签名;
5、一个类可以实现多个接口,方法是在接口名用“,”隔开,如 Implements ISpeak,IRun。
以上是一个简单易懂的VB.NET接口范例,以及学习心得。