重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在VB.NET的类里,实现一个接口的语句是:
创新互联公司主要业务有网站营销策划、成都网站设计、成都网站制作、微信公众号开发、重庆小程序开发、HTML5建站、程序开发等业务。一次合作终身朋友,是我们奉行的宗旨;我们不仅仅把客户当客户,还把客户视为我们的合作伙伴,在开展业务的过程中,公司还积累了丰富的行业经验、成都全网营销推广资源和合作伙伴关系资源,并逐渐建立起规范的客户服务和保障体系。
implements接口名称
例如,下面定义一个车(总称)的接口,这里的车是各种车的总称:
Public Interface ICar
Property color() As String
Property speed() As Long
Sub PrintInfo()
End Interface
然后在不同类型的“车”类里实现它:
Public Class A_Car
Implements ICar
Dim m_color As String, m_speed As Long
Public Property color() As String Implements ICar.color
Get
Return m_color
End Get
Set(ByVal Value As String)
m_color = Value
End Set
End Property
Protected Overrides Sub Finalize()
MsgBox(I was deconstructed!)
End Sub
Public Sub New()
m_color = Red
m_speed = 210
MsgBox(I was constructed!)
End Sub
Public Property speed() As Long Implements ICar.speed
Get
Return m_speed
End Get
Set(ByVal Value As Long)
m_speed = speed
End Set
End Property
Public Sub PrintInfo() Implements ICar.PrintInfo
MsgBox(Color: m_color vbNewLine Speed: m_speed, MsgBoxStyle.Information)
End Sub
End Class
在 Form 的 Load 事件中编写:
Dim myCar As New A_Car
myCar.PrintInfo()
运行之后就创建了一个 A_Car 类的实例 myCar,然后出现两个对话框,分别说明实例已经创建和汽车的信息。当窗体卸载时,这个类的实例 myCar 将自动销毁,这时将出现一个“I was deconstructed!”的对话框。
声明一个接口时,需春饥要考虑以下几点:
1.接口主体只限于对方法,索引器以及属性的伍森前声明;
2.接口成员是隐式公开的,如果对其显式指定访问级别,就会出现编译器错误;
3.接口中不能包含字段,构造函数和常量等;
4.在接口中不能实现任何方法,属性或者索引器;
5.在指定方法时,只需要给出返回类型,名称和参数列表,然后分号结束。
面向对象的接口
在C++中,一个类被允许继承多个类。但是在Java以后的语言不被允许。
这样,如果想继承多个类时便非常困难。所以开发方想出了新办法:接口。
一个接口内,允许包含变量、常量等一个类所包含的基本内容。但是,接口中的函数不允许设定代码,也就意味着不能把程序入口放到接口里。由上可以理解到,接口是专门被继承的。接口存在的意义也是被继承。和C++里的抽象类里的纯虚函数是相同的。不能被实例化。
定义接口的关键字是interface,例如:
publicinterfaceMyInterface{
public void add(int x,int y);
public void volume(int x,int y,int z);
}
继承接口的关键字是implements,相当于继承类的腔清extends。
需要注意的是,当继承一个接口时,接口里的所有函数必须全部被覆盖。例如:
class Demo implements MyInterface{
public void add(int x,int y){
System.out.println( +(x+y));
}
public void volume(int x,int y,int z){
System.out.println( +(x*y*z));
}
public static void main(String args[]){
Demo d=new Demo();
d.add(10,20);
d.volume(10,10,10);
}
}
输出结果:
30
1000
当想继承多个类时,开发程序不允许,报错。这样就要用到接口。因为接口允许多重继承(,),而类不允许。所以就要用到接口。
通过VB NET VB程序员终于拥有了全部面向对象的特征 其中之一就是程序员以创建抽象类 虽然抽象类在编程中的作用常被过高估计 但抽象类确实提供了不少开发可行性 一段时间以来 VB程序员都在要求微软向他们提供全面的备受C++及JAVA程序员推崇的面向对象的特性 虽然有少部份与OOP相关的特征已被添加到旧的版本上 但程序员还得等待VB NET 将实际意义上的OOP添加到VB上去 通过OOP你可以创建抽象类 虽然大家都对它寄予了厚望 但令人惭愧的是抽象类仅仅只能给程序员提供更多的开发可行性而已 阅读本文您需要具备一定的面向对象以及VB NET的相关知识 很容易解释什么是抽象类? 抽象类即是不能被实例化的类 而且你不能够在自己的程哗正序里通过这种类来生成一个对象 你也许会认为不能被实例化的类是没多大用处的 事实上 在某些环境下 抽象类是非常有用的 你可以把它作为一个基础类以此为基类创建新的类 在对功能要求不高的环境下生成的类 会向你提供一个规定的启始点 通过这个点你可以推导出非抽象类 在此假设一个要用抽象类的程序设计 假设图形程序提供了大量的drawing类:比如圆 三角 曲线等等 所有这些作drawing类都有某个共同的特性 比如位置 大小 色彩 删除等属性 其它的类成员 比如描绘图形的方法就不同于每个单独的类 因此 这样为利用抽象类创造了一个理想的环境 在抽象类中 你需要定义所有drawing类都需要的全部通用类成员 因为drawing类不响应任何图形 但是当把它作为shape specific drawing类中的base类 你需要确认所有这些非 抽象类拥有最基本的功能 创建抽象类 对抽象类的定义很简单 只要在定义域里加入关键字MustInherit 如 Public MustInherit class MyAbstract class End class除开要包含关键字之外 抽象类的定义与非抽象类的定义没什么两样 抽象类包含了从其它类承继而来的属性及方法等等 但是 在抽象类中定义的类成员(属性及方法)是如何与衍生类中的定义元素产生乱悄悔联系的呢?在此并没有复杂的规则 但你作出的决定是与你所拥有的类的性能及它将衍生出来的 类所密切相关 你有三个选择 抽象类中已有的功能比如属性 方法等在衍生类中可以被重载 实现这一功能只要在成员定义中输入Overridable关键字 如 Public Overridable Sub Move(NewX As Integer NewY As Integer) End Sub 为重载abstract base 类中的成员 衍生类在执行语句中须使用Overrides关键字段 如 Public Overrides Move(NewX As Integer NewY As Integer) End Sub 抽象类中已有的功能不能在衍生类中重载 即是 衍生类必须使用抽象类定义的成员 如果你在抽象类中不使用任何特殊字段来定义任一成员将会产生该缺省 以下代码定义了抽象类中的Xpos属性 衍生类必须使用该属性 因为该属性不能被重载 如 Public Property XPos() As Integer End Property利用MustOverride关键字来定义抽象类成员 该成员可以在衍生类中重载 以下举例说明了衍生类必须执行名为GetObjectAt()的方法 Public MustOverride Function GetObjectAt(X As Integer Y As Integer) As Object请注意MustOverride成员运橡不需要End Sub 或End Function语句 使用MustOverride最方便的地方在于它不仅规定了成员的名称同样也规定了成员的符号 先前的例子要求任一衍生类都需定义名称为GetObjectAt()的方法 因此会产生两种类型的整型变量以及返回一个类型对象 该方法是在衍生类中的执行是完全根据程序员的指令要求 通过MustOverride字段说明的方法一些时候也被称为abstract 成员 抽象类与接口如果你熟悉接口的相关知识 你会认为抽象类与它是如此相似 事实上只是一部份类似 定义仅含有抽象成员的抽象类基本上是与接口的定义相同的 因为你已经规定衍生类必须执行某个具有专用符号的成员 另外 抽象类具有其它的功能 是接口无法实现的 尤其是在定义非抽象类成员的基本功能薄?BR当你在认为抽象类或是接口都能如常运作时 请谨记如下几点 除了从一个类(抽象或非抽象) 派生出来 一个衍生类可以执行多个接口 从抽象类派生出来的子类同样能够执行一个或多个接口 这要依你的项目而定 你可以只用一个抽象类或多个接口 或者抽象类和接口混合使用 VB和 NET在这项工作上提供了非常大的灵活性 因此你可以通过不同的方式来达到你想要的结果 底线是一些项目必须是通过抽象类来实现 抽象类也许会被认为是一种非常专业的编程方法 它可帮程序员减少工作量并且可以生成更简便功能更强大的程序 实际操作中使用抽象类 设想一下你正在为一家大公司开发一个新的员工数据库 你的工作就是监督类的执行 使雇员的基本情况与管理部门的要求相吻合 同样 在区分公司分支机构的要求时也提供更大的便利 基本要求如下: 抽象类里有姓名 雇用时间等属性 这些属性不会被重载 因为大多数雇员来自美国 因此在抽象类里执行退休ID 以运行社会保障号码 国外分公司将会利用不同的方式来鉴别雇员的退休ID 因此该属性会在衍生类里重载 以便单个分支机构分别执行 名称为补偿金的方法不会引起争议 然后会返回一个含有雇员补偿金细节的类型对象 因为不同分公司都规定不同的补偿金 薪金 佣金 红利等 因此灵活的执行这些对象是很有必要的 由此会产生一个抽象方法 由此而产生的抽象类的代码 称为EmployeeBase 会在第一栏里显示 位于法国的分公司的程序员用EmployeeBase类作为EmployeeFrance类的基类 与当地雇员记录软件合作使用 因此 衍生类需要承继名称及雇用日期等字段 更多的是 在EmployeeBase 类中的RetirementID成份适合运用在法国 因此 新类不会重载该成份 程序员做的所有这些工作是为了执行abstract Compensation member 的重载 但是在英国 RetirementID 属性不适用于该地 因此衍生类将会重载该成员 同样的也会重载Compensation 成员 lishixinzhi/Article/program/net/201311/13310
可以的,把项目的类型设成类库,将所有的函数用Public修饰附封装在类里面,生成dll文件。这样别人就可以在别人项目属性的引用页里面添加对你的dll文件的引用,然后导入命名空间,直接使用悔逗猛了。
比如说,在一个项目里:
NameSpace Controller
Public Class ControlMachine
Public Sub Boot()
End Sub
Public Sub Shutdown()
End Sub
End Class
End NameSpace
进入另一个项目的项目属碧桥性,进入引用页,添加到那个dll文件的引用。在代码中:
Imports Controller '加在代码文档指物的最顶端
使用:
Dim controller As New ControlMachine
controller.Boot()
controller.Shutdown()
希望你能了解,不懂再追问