飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2498|回复: 3

21天学通VB.NET 第十五章学习笔记[原创]

[复制链接]
  • TA的每日心情
    开心
    2020-3-30 17:42
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2008-10-2 14:41:52 | 显示全部楼层 |阅读模式
    21天学通VB.NET 第十五章学习笔记[原创]PS:PYG的兄弟们,好久不见了~不想已经离开PYG好几年了。各位兄弟还好吗?这个以前的版本,欢迎各位兄弟去我自己的论坛去找,灵狐社区,链接我放在最下面了。
    Chapter 15

    对象是通过类创建的,是类的一个实例。Public在所有作用域有效。私有类仅在当前类有效。声明为Friend的类、变量和过程能被统一程序中的任何其他部分的代码访问,但不能被其他程序的代码访问。
    继承
    可以通过在类声明的部分添加NotInheritable关键字来限制一个类被继承。抽象类必须被用作基类而不能被直接创建,如果要定义一个基对象,但又不想用它自身的,而只用它继承对象的一部分,使用MustInherit关键字是非常合适的。当基类自身不是功能性的类时,要使用这个类中的关键性方法就需要在它的继承类中实现它。
    MustOverride用在一个方法的声明中,以迫使在这个类的每个继承类中都要包含这个方法。如果使用了MustOverride,就不要在使用这个关键字的类中对该方法或属性提供任何的代码实现了。
    添加属性
    主要有两种方法给类添加属性:创建public变量或创建完整的属性子过程。类属性可以是公有变量,但你无法对这些暴露的变量进行完全的控制,一旦这些值改变了,代码将无法正确运行。
    通过编写一个属性子过程来创建类属性是一种非常复杂的办法,但这能使你对属性自身进行完全的控制。首先,决定要添加的属性名称和数据类型,然后输入
    Public  Property  Name() as  String
    然后回车,VB.NET将创建一个属性过程的完整框架:
    Public  Property  Name() as  String
    Get

    End Get
    Set(ByVal Value as String)

    End Set
    End Property
    这个过程由Get和Set两部分组成,分别处理赋值和读取。当使用属性子过程时,需要声明一个私有变量记录属性值自身。类似有变量通常以m_(意思是member variable——成员变量)为前缀,它表示类属性的某种内部特征。
    Public Class Test
    Private m_sName as String
    Public (ReadOnly/WriteOnly)  Property  Name() as  String
    Get
    Return m_sName
    End Get
    Set(ByVal Value as String)
    m_sName=Value
    End Set
    End Property
    End Class

    属性过程较公有变量的真正优势是能创建只读或只写的属性,同时能在每次要写属性值时对该数据进行验证。
    属性过程可以通过属性声明来使其只读或只写。
    在属性过程中,无论你何时想得到或是设置属性的值,都要运行代码,这时你能做许多事,当然包括对象中的数据验证。
    要为类添加方法,就要创建Sub或Function过程。Public,Private,Friend等与变量的声明的意义一致。属性不应引起任何事件发生。当某事情发生时,事件允许一个对象通知对该事件感兴趣的任何人,使用事件能更好地在对象和使用它的代码之间进行交互。
    在对象中使用事件的两个必要步骤是用WithEvents声明对象和用Handles关键字创建事件处理程序。
    面向对象编程的一个强大的特征就是它可以把一个对象当成是另一个类的实例。可以利用继承,将一个派生类当成基类来用。
    接口是一种特殊形式的类,它不含有任何代码,用于描述一个对象的外貌。类可以实现一个或多个接口,可以像对象一样对待接口。当要一个类提供一些共同的功能时,用接口比用继承好。
    Implements 关键字和 Implements 语句

    Visual Basic 保留字 Implements 有两种使用方式。Implements 语句指定类或结构实现接口。Implements 关键字指定类成员或结构成员实现特定的接口成员。

    实现语句
    如果一个类或结构实现一个或多个接口,它必须在 Class 或 Structure 语句之后包括 Implements 语句。Implements 语句需要一个由类实现的接口的逗号分隔列表。类或结构必须使用 Implements 关键字来实现所有的接口成员。

    Implements 关键字
    Implements 关键字需要一个要实现的接口成员的逗号分隔列表。通常只指定单个接口成员,其实还可以指定多个成员。接口成员的规范由接口名称(必须在类中的 implements 语句中指定)、句号和要实现的成员函数、属性或事件的名称组成。实现接口成员的成员名称可使用任何合法标识符,不受早期 Visual Basic 版本中使用的 Inte**ceName_MethodName 规范的限制。

    例如,以下代码显示了如何声明一个名为 Sub1 的用于实现接口方法的子例程:

    Visual Basic 复制代码
    Class Class1
        Implements inte**ceclass.inte**ce2

        Sub Sub1(ByVal i As Integer) Implements inte**ceclass.inte**ce2.Sub1
        End Sub
    End Class



    实现成员的参数类型和返回类型必须与接口属性或接口中的成员声明匹配。实现接口元素的最常用方法是采用一个与接口同名的成员,如上述示例所示。

    要声明接口方法的实现,可以使用任何在实例方法声明上合法的属性(包括 Overloads、Overrides、Overridable、Public、Private、Protected、Friend、Protected Friend、MustOverride、Default 和 Static)。Shared 属性是不合法的,因为它定义类而不是实例方法。

    使用 Implements,也可以编写单个方法来实现接口中定义的多个方法,如下面的示例所示:

    Visual Basic 复制代码
    Class Class2
        Implements I1, I2

        Protected Sub M1() Implements I1.M1, I1.M2, I2.M3, I2.M4
        End Sub
    End Class



    可以使用私有成员来实现接口成员。在私有成员实现一个接口成员时,即使在类的对象变量上不能直接使用该成员,仍然可以通过接口将其变为可用成员。

    .Net Framework提供了大量的接口,同时也可以像定义新类一样创建新的接口。定义一个接口要以"Public Inte**ce<inte**ce name>"开始,以"End Inte**ce"结束,在开始和结束之间要包含方法、属性和事件的声明。接口中是不允许写代码的,方法和属性的声明要写在声明的第一行。
    接口在很多方面和类相似,接口中,只有成员被声明,而不提供代码实现,作用域也未被包含在声明中,但你在类中实现接口时Public是默认的。在接口中,属性在类的每个实例中都是相同的,用以描述类的细节。虽然接口中的属性是只读的,但接口本身可以包括任何形式的属性。
    接口和继承都有使不同对象共享同一特征的能力,但它们的两个关键性区别使它们适用于不同的情况。接口不包含任何该特征的实现代码,接口只作简单的定义,由类去实现接口所规定的功能。继承的一个优势是从基类到派生类共享所实现的功能,而接口增加了它的机动性,它允许一个类实现多个接口。
    当一个类想有多个功能时,应使用接口。继承表明了一种“是”的关系。

    要使代码对任何使用它的项目都有效,就需要创建一个类库(Class Library)项目。这种形式的项目本身不可运行,而是在别的项目中用于使用它的代码。
    命名空间(NameSpaces)
    命名空间,实际上是一种组织代码的机制。当创建类库时,这种组织结构是很重要的。命名空间用"Namespace <namespaces>"和"End Namespace" 声明。嵌套的命名空间是通过指定完整的名字来定义的,而不是嵌套空间声明。类被认为是命名空间的一部分,在代码中要通过Namespace.Class来引用。能在多个文件中使用相同的命名空间,甚至在不同的代码库中,VS.Net为每个命名空间定义创建了两个文件。
    DLL库(动态链接库)
    当在库项目中添加了类和接口以后,就可以建立最终的DLL文件了。可以从生产菜单中选生产项,或用Ctrl+Shift+B生成DLL文件。一般是叫<项目名>.dll,它生成在项目的bin目录下。
    使用这个类库,如同使用.Net Framework一样,类自身要通过<项目名>.<域>.<类>的路径来查找。
    总结:在应用程序中使用面向对象,是一个构思、设计问题。
    多态性描述的是将很多不同对象处理成同一类型的能力,允许有不同的类。它是由继承和接口技术提供的。
    灵狐社区http://www.zerofox.cn/bbs/index.php首发
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-5-8 22:10
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2008-10-12 12:49:28 | 显示全部楼层
    支持一下,谢谢提供。
    PYG19周年生日快乐!
  • TA的每日心情
    难过
    2024-4-22 14:49
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2008-10-14 09:00:52 | 显示全部楼层
    哈,兄弟和 《21天学会JAVA》抗衡啊~~~ 支持!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-10-15 09:35:26 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表