interface中的默认修饰符

来源:互联网 发布:常用算法有哪些 编辑:程序博客网 时间:2024/05/16 06:55

 C#的中接口:

访问级别。所有接口成员都隐式地具有 public 访问级别。在定义成员时,无法使用任何访问修饰符。

但是,实现接口的类可以为所实现的每个成员声明一个访问级别。

如果将类实例赋予某个变量,则此实例的成员的访问级别可能取决于该变量的数据类型是基础接口还是实现类。

下面的示例阐释这一点:

Public Interface IDemo    Sub doSomething()End InterfacePublic Class implementIDemo    Implements IDemo    Private Sub doSomething() Implements IDemo.doSomething    End SubEnd ClassDim varAsInterface As IDemo = New implementIDemo()Dim varAsClass As implementIDemo = New implementIDemo()

如果通过 varAsInterface 访问类成员,则它们全都具有公共访问级别。

但是,如果通过 varAsClass 访问成员,则 Sub 过程 doSomething 具有私有访问级别。

 

 

 

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

 

  • 范围。接口的范围贯穿它的命名空间、类、结构或模块。

    每个接口成员的范围是整个接口。

  • 生存期。接口本身和它的成员都没有生存期。在类实现接口而且创建一个作为该类实例的对象时,此对象在它于其中运行的应用程序内具有生存期。

  • 默认属性。接口至多可以将一个属性指定为其默认属性,您无需使用属性名称即可引用此属性。指定此类属性的方法是:利用default修饰符来声明它。

  • 默认属性

     

    接受参数的属性可声明为类的默认属性。当未给对象指定具体的属性时,“默认属性”是 Visual Basic 将使用的属性。因为默认属性使您得以通过省略常用属性名使源代码更为精简,所以默认属性非常有用。

    最适宜作为默认属性的是那些接受参数并且您认为将最常用的属性。例如,Item 属性就非常适合作为集合类的默认属性,因为它经常被使用。

    下列规则适用于默认属性:

    • 一种类型只能有一个默认属性,包括从基类继承的属性。此规则有一个例外。在基类中定义的默认属性可以被派生类中的另一个默认属性隐藏。

    • 如果基类中的默认属性被派生类中的非默认属性隐藏,使用默认属性语法仍可以访问该默认属性。

    • 默认属性不能为 SharedPrivate

    • 如果某个重载属性是默认属性,则同名的所有重载属性必须也指定 Default

    • 默认属性必须至少接受一个参数。

    示例

    下面的示例将一个包含字符串数组的属性声明为类的默认属性:

  • Class Class2    ' Define a local variable to store the property value.    Private PropertyValues As String()    ' Define the default property.    Default Public Property Prop1(ByVal Index As Integer) As String        Get            Return PropertyValues(Index)        End Get        Set(ByVal Value As String)            If PropertyValues Is Nothing Then                ' The array contains Nothing when first accessed.                ReDim PropertyValues(0)            Else                ' Re-dimension the array to hold the new element.                ReDim Preserve PropertyValues(UBound(PropertyValues) + 1)            End If            PropertyValues(Index) = Value        End Set    End PropertyEnd Class

    访问默认属性

    可以使用缩写语法访问默认属性。例如,下面的代码片段同时使用标准和默认属性语法:

    Dim C As New Class2' The first two lines of code access a property the standard way.' Property assignment.C.Prop1(0) = "Value One"' Property retrieval.MsgBox(C.Prop1(0))' The following two lines of code use default property syntax.' Property assignment.C(1) = "Value Two"' Property retrieval.MsgBox(C(1))
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
    Interface 语句 (Visual Basic)

     

    声明接口的名称,并引入接口包含的成员的定义。

    [ <attributelist> ] [ accessmodifier ] [ Shadows ] _Interface name [ ( Of typelist ) ]    [ Inherits interfacenames ]    [ [ modifiers ] Property membername ]    [ [ modifiers ] Function memberame ]    [ [ modifiers ] Sub memberame ]    [ [ modifiers ] Event memberame ]    [ [ modifiers ] Interface memberame ]    [ [ modifiers ] Class memberame ]    [ [ modifiers ] Structure memberame ]End Interface
    attributelist

    可选项.accessmodifier

    可选。可以是如下内容之一:

    • Public

    • Protected

    • Friend

    • Private

    • Protected Friend

    Shadows

    可选。请参见 Shadows

    name

    必选。此接口的名称。请参见已声明元素的名称

    Of

    可选项。指定这是一个泛型接口。

    typelist

    如果使用 Of 关键字,则为必选项。此接口的类型参数列表。请参见类型列表

    Inherits

    可选项。指示此接口继承另一个接口或另外多个接口的属性与成员。请参见 Inherits 语句

    interfacenames

    如果使用 Inherits 语句,则为必选项。此接口派生自的接口的名称。

    modifiers

    可选项。适用于所定义的接口成员的修饰符。

    Property

    可选。定义一个作为此接口成员的属性。

    Function

    可选。定义一个作为此接口成员的 Function 过程。

    Sub

    可选。定义一个作为此接口成员的 Sub 过程。

    Event

    可选。定义一个作为此接口成员的事件。

    Interface

    可选项。定义一个嵌套在此接口中的接口。嵌套的接口的定义必须以 End Interface 语句终止。

    Class

    可选。定义一个作为此接口成员的类。成员类的定义必须以 End Class 语句终止。

    Structure

    可选。定义一个作为此接口成员的结构。成员结构的定义必须以 End Structure 语句终止。

    membername

    对于这些项目为必选项:定义为接口成员的每个属性、过程、事件、接口、类或结构。成员的名称。

    End Interface

    终止 Interface 定义。