Microsoft .NET 中的基类继承[2]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 sonicdater 的 blog

构建 line 类

接下来将构建要继承的 line 类。

  1. 从菜单中单击 project(项目),然后单击 add class(添加类)。
  2. 键入如下所示的代码。
    public class line
        private mstrline as string
        
        property line() as string
            get
                return mstrline
            end get
            set(byval value as string)
                mstrline = value
            end set
        end property
        
        readonly property length() as integer
            get
                return mstrline.length
            end get
        end property
        
        public function getword() as string
            dim astrwords() as string
            
            astrwords = mstrline.split(" ".tochararray())
            
            return astrwords(0)
        end function
    end class
    

创建子类

既然窗体和基类都已经创建完毕,现在便可以开始执行继承了。

  1. 单击 project(项目),然后单击 add class(添加类)。将该类命名为 linedelim.vb 并单击 ok(确定)。
  2. 添加新类时,请修改 visual basic .net 所创建的代码,使之与下面的示例代码相似。
    public class linedelim
        inherits line
    
    end class

因为添加了 inherits line 语句,所以您可以在这一新创建的类中使用 line 类的所有属性和方法。

试一试

  1. 打开 frmlinetest.vb 窗体。
  2. 双击 get word(取词)按钮。
  3. 向此按钮的单击事件过程添加以下代码:
    protected sub btnfirst_click(byval sender as object, _
     byval e as system.eventargs) handles btnfirst.click
        dim oline as linedelim = new linedelim()
          
        oline.line = txtline.text
        txtfirstword.text = oline.getword()
    end sub
  4. 运行项目,并在窗体上单击 get word(取词)按钮。您将看到“the”一字出现在按钮旁边的只读文本框中。

inherits 语句的功能非常强大,只需要使用这一个语句,就可以在 linedelim 类中使用 line 类的所有属性和方法。尽管这个新类尚未执行任何新的操作,但它却表明从 line 类中继承的所有代码都可以正常工作。

添加其他功能

现在,您可以使用其他属性和方法对 linedelim 类进行扩展。要向 linedelim 类添加两个新的属性,请执行以下步骤。

  1. 在上一部分添加的 inherits 语句后添加两个 private 变量,如下所示。
    private mstrdelim as string = " "
    private mstroriginal as string
  2. 键入如下代码,为这两个 private 变量添加适当的 property 语句。您可以将以下代码放在上面输入的两行代码后面(紧挨这两行)。
    public property delimiter() as string
        get
            return mstrdelim
        end get
        set(byval value as string)
            mstrdelim = value
        end set
    end property
       
    public readonly property originalline() as string
        get
            return mstroriginal
        end get
    end property

现在您可以使用 delimiter 属性设置并获取 private 变量 mstrdelim 的值。

如果不希望其他人更改这些属性,您可以将属性设为只读。要执行此操作,请不再使用 set 语句,并在 property 语句中添加 readonly 属性。有关示例,请参见上面代码中显示的 originalline 属性声明。

接下来,需要创建一个称为 replaceall 的方法,此方法可以将文本行中的所有空格替换为传递到 delimiter 属性中的分隔符字符。

public function replaceall() as string
    mstroriginal = mybase.line
      
    return mybase.line.replace(" ", mstrdelim.tochar())
end function

replaceall 方法通过基类的 line 方法检索原始文本行。而以前从基类中检索属性时使用的是 mybase.line 语法。replaceall 函数将 mybase.line 属性的值放入您刚刚为该类创建的 private 变量 mstroriginal 中。string 数据类型的 replace 方法将字符串字符的所有实例替换为在 delimiter 属性中设置的新分隔符字符 mstrdelim。

mybase 关键字

可以从任一子类使用 mybase 关键字,以调用基类中的任何属性或方法。即使基类的方法在子类中已被覆盖,您也可以使用该关键字对其进行调用。例如,如果在基类中存在 replaceall 方法,但在子类中该方法已被覆盖,您可以从子类的 replaceall 方法中调用基类的 replaceall 方法。

试一试

  1. 打开 frmlinetest.vb 窗体。
  2. 双击 replace(替换)以调出单击事件过程。
  3. btnreplace 按钮的单击事件中编写以下代码:
    protected sub btnreplace_click( _ 
     byval sender as object, _
     byval e as system.eventargs) handles btnreplace.click
        dim oline as linedelim = new linedelim()
          
        oline.delimiter = txtdelim.text
        oline.line = txtline.text
        txtreplace.text = oline.replaceall()
    end sub

    此代码将 delimiter 属性设置为在示例窗体的 txtdelimiter 文本框中输入的值。然后您可以调用 replaceall 方法,将文本行中的所有空格更改为新的分隔符字符。

本文关键:.NET 类 继承
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top