经验之谈VB.NET Protected方法

开发 后端
这里就VB.NET Protected方法做出了详细的分析,当变量或者方法被声明为Protected的时候,对于任何类外部的代码将不能调用,但是还是可以被由它继承而来的子类调用。

VB.NET继承还是比较常用的,于是我研究了一下VB.NET Protected方法,在这里拿出来和大家分享一下,希望对大家有用。当我们通过继承来创建一个子类的时候,新类就可以从父类中得到了所有的Public(公共)和Friend(友)方法、属性和变量。

#T#如果你在父类中声明一个Private(私有)的方法、属性和变量,那么在新的子类中就不能得到这个类的方法、属性和变量。当然也有个例外,就是New方法。构造函数方法必须在每一个子类中重新编写。这个内容我们在本教程的后面将深入讨论。举个例子,我们可能从LineItem类中重写Amount方法,具体如下:

  1. Public Function Amount() As Single   
  2. Return CalcAmount   
  3. End Function  
  4.  
  5. Private Function CalcAmount() As Single  
  6. Return fQuantity * fPrice  
  7. End Function   

从这个改变中,我们可以看到公共的方法Amount使用了Private方法来工作。当我们利用LineItem来创建子类ServiceLine的时候,任何的ServiceLine对象都有一个Amount方法,因为它在基类中声明为Public。另外一方面,这个CalcAmount方法被声明为Private,所以所有的ServiceLine类和任何的客户代码都不能访问它。这里值得一提的是,既然Amount方法存在于LineItem类中,它就可以访问CalcAmount方法即使在ServiceLine类中不能看到这个方法。

举个例子,在我们的客户代码中我们可以这样做:

  1. Protected Sub Button1_Click(ByVal sender As Object, _  
  2. ByVal e As System.EventArgs)  
  3. Dim sl As ServiceLine  
  4.  
  5. sl = New ServiceLine()  
  6. sl.Item = delivery sl.Price = 20 
  7. sl.DateProvided = Now 
  8. MsgBox(sl.Amount, MsgBoxStyle.Information, amount)  
  9. End Sub  

结果显示在一个消息框中,这样就阐明了CalcAmount方法被成功调用了,虽然客户代码和ServiceLine代码没有直接调用它。

VB.NET Protected方法

有时,Public和Private并不能满足我们的要求。如果我们想声明一些变量或者方法为Private,那么这些变量和方法就只能在我们的类中使用;但是当我们声明一些变量和方法为Public或者Friend,那么这些变量和方法就可以在子类和客户代码中使用。但是,有时有声明一些变量和方法,让它们在子类中有效,而在客户代码中不能用,该怎么办呢?这里可以使用VB.NET Protected方法辖域。当变量或者方法被声明为Protected的时候,对于任何类外部的代码将不能调用,但是还是可以被由它继承而来的子类调用。举个VB.NET Protected方法例子吧,如下:

  1. Public Class ParentClass  
  2. Protected TheValue As Integer  
  3. End Class  
  4.  
  5. Public Class SubClass  
  6. Inherits ParentClass  
  7.  
  8. Public Function GetValue() As Integer  
  9. Return TheValue  
  10. End Function  
  11. End Class  

在上面的代码中我们有一个父类,它有一个Protected成员变量TheValue。这个变量在任何的客户代码中都不能被调用。但是这个变量对于任何的子类都是有效的因为它继承了这个父类。在这个例子中,SubClass有一个Public方法返回了Protected变量的数值,但是这个变量对于类的外部任何客户代码都是无效的。

责任编辑:田树 来源: 博客
相关推荐

2009-11-02 15:16:07

VB.NET编程

2009-10-28 17:00:30

VB.NET数据库

2009-11-02 18:12:45

VB.NET FLAS

2009-10-27 17:08:35

VB.NET流操作文件

2009-12-23 10:07:57

学习WPF

2009-10-13 17:08:10

CLR VB.NET

2009-11-09 17:06:38

WCF选择绑定

2009-12-17 18:12:31

Ruby框架应用

2010-04-30 14:31:58

Unix系统

2009-12-09 16:58:03

PHP strtoti

2010-03-02 17:48:35

WCF寻址报头

2009-10-14 11:27:20

VB.NET Grou

2009-10-26 13:13:17

VB.NET编码规范

2009-10-16 14:31:48

VB.NET Noti

2010-01-14 18:14:22

VB.NET开发特点

2010-04-22 18:07:28

Aix系统维护

2009-10-10 15:43:51

2009-11-05 15:50:25

WCF behavio

2012-05-23 09:43:59

Linux升级经验

2009-11-16 15:32:05

PHP数组函数
点赞
收藏

51CTO技术栈公众号