VB.NET继承还是比较常用的,于是我研究了一下VB.NET Protected方法,在这里拿出来和大家分享一下,希望对大家有用。当我们通过继承来创建一个子类的时候,新类就可以从父类中得到了所有的Public(公共)和Friend(友)方法、属性和变量。
创新互联专注于蓬江企业网站建设,响应式网站建设,商城网站建设。蓬江网站建设公司,为蓬江等地区提供建站服务。全流程按需求定制网站,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务
#T#如果你在父类中声明一个Private(私有)的方法、属性和变量,那么在新的子类中就不能得到这个类的方法、属性和变量。当然也有个例外,就是New方法。构造函数方法必须在每一个子类中重新编写。这个内容我们在本教程的后面将深入讨论。举个例子,我们可能从LineItem类中重写Amount方法,具体如下:
- Public Function Amount() As Single
- Return CalcAmount
- End Function
- Private Function CalcAmount() As Single
- Return fQuantity * fPrice
- End Function
从这个改变中,我们可以看到公共的方法Amount使用了Private方法来工作。当我们利用LineItem来创建子类ServiceLine的时候,任何的ServiceLine对象都有一个Amount方法,因为它在基类中声明为Public。另外一方面,这个CalcAmount方法被声明为Private,所以所有的ServiceLine类和任何的客户代码都不能访问它。这里值得一提的是,既然Amount方法存在于LineItem类中,它就可以访问CalcAmount方法即使在ServiceLine类中不能看到这个方法。
举个例子,在我们的客户代码中我们可以这样做:
- Protected Sub Button1_Click(ByVal sender As Object, _
- ByVal e As System.EventArgs)
- Dim sl As ServiceLine
- sl = New ServiceLine()
- sl.Item = delivery sl.Price = 20
- sl.DateProvided = Now
- MsgBox(sl.Amount, MsgBoxStyle.Information, amount)
- End Sub
结果显示在一个消息框中,这样就阐明了CalcAmount方法被成功调用了,虽然客户代码和ServiceLine代码没有直接调用它。
VB.NET Protected方法
有时,Public和Private并不能满足我们的要求。如果我们想声明一些变量或者方法为Private,那么这些变量和方法就只能在我们的类中使用;但是当我们声明一些变量和方法为Public或者Friend,那么这些变量和方法就可以在子类和客户代码中使用。但是,有时有声明一些变量和方法,让它们在子类中有效,而在客户代码中不能用,该怎么办呢?这里可以使用VB.NET Protected方法辖域。当变量或者方法被声明为Protected的时候,对于任何类外部的代码将不能调用,但是还是可以被由它继承而来的子类调用。举个VB.NET Protected方法例子吧,如下:
- Public Class ParentClass
- Protected TheValue As Integer
- End Class
- Public Class SubClass
- Inherits ParentClass
- Public Function GetValue() As Integer
- Return TheValue
- End Function
- End Class
在上面的代码中我们有一个父类,它有一个Protected成员变量TheValue。这个变量在任何的客户代码中都不能被调用。但是这个变量对于任何的子类都是有效的因为它继承了这个父类。在这个例子中,SubClass有一个Public方法返回了Protected变量的数值,但是这个变量对于类的外部任何客户代码都是无效的。
名称栏目:经验之谈VB.NETProtected方法
网站地址:http://www.shufengxianlan.com/qtweb/news5/294105.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联