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 属性就非常适合作为集合类的默认属性,因为它经常被使用。
下列规则适用于默认属性:
一种类型只能有一个默认属性,包括从基类继承的属性。此规则有一个例外。在基类中定义的默认属性可以被派生类中的另一个默认属性隐藏。
如果基类中的默认属性被派生类中的非默认属性隐藏,使用默认属性语法仍可以访问该默认属性。
默认属性不能为 Shared 或 Private。
如果某个重载属性是默认属性,则同名的所有重载属性必须也指定 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 定义。
- interface中的默认修饰符
- Interface成员的默认修饰
- abstract修饰符 和 interface修饰符
- C# 默认修饰符
- Java 默认修饰符
- Java 默认修饰符
- java默认修饰符
- Java默认修饰符
- Java 默认修饰符 总结
- Java 默认修饰符 总结
- C# 默认访问修饰符
- c#默认访问修饰符
- java类和类中的变量、方法默认权限修饰符的用法
- java中的public,private,protected修饰符,以及不写(默认)时的区别
- java类和类中的变量、方法默认权限修饰符的用法
- java中的修饰符
- C#中的修饰符
- java中的修饰符
- 管理学十大经典定理
- Hibernate批量更新策略
- “一声响”电话诈骗的应对方法
- 从Java的角度理解设计模式1:什么是重构
- Linux的那些事儿(4)----Linux环境下编程之Unix标准化及实现
- interface中的默认修饰符
- Java+blazeds+Flex的例子
- [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket 解决方法
- 虚基类、抽象类
- ice:selectOneMenu 和 ice:selectManyCheckbox
- argc argv的使用
- 遍历JavaScript对象的所有属性
- C# 输入完以后立即更新缓冲区(DataGridView CheckBox列checked变化后就触发CellValueChanged事件)
- WWF部分特点总结