vb.net类的封装,继承,多态,抽象之一

本文介绍了VB.NET中类的封装、继承、多态和抽象概念。详细阐述了类的构造器,包括基类和派生类构造器的作用及调用规则,还说明了析构器的调用情况。同时提到.NET环境中类的派生关系,以及虚拟函数的定义和覆盖规则。

封装就是把各种方法和变量合并到一个类,用这个类代表某个对象为完成一定的任务所能保存的范围以及它能执行的操作。

继承就是根据现有类的方法和成员变量生成新的类的功能

多态就是对象随着程序执行而使其形式发生改变的能力。

抽象就是在暂时忽略对象的具体细节的功能。

在类中,构造器的方法使简化类的成员变量的初始化处理,当用继承从一个类构造另一个类的时候,会有两套构造器发生作用,即基类构造器和派生类构造器

例如:

Public Class Form1
    Inherits System.Windows.Forms.Form

#Region " Windows 窗体设计器生成的代码 "  

#End Region
    Class base
        Public Sub New()
            MsgBox("base class running")
        End Sub
    End Class
    Class derived
        Inherits base
        Public Sub New()
            MsgBox("derived class running")
        End Sub
    End Class

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim s As New derived
    End Sub
End Class

如果基类构造器不需要参数,派生类执行的时候,vb.net自动调用基类构造器,但是如果基类构造器要求参数,那么派生类就必须显式调用基类构造器,同时向基类构造器传递相应的参数。

因为所有的类都使用方法new作为构造器名,所以派生类就不能简单的调用方法new,vb.net无法确定需要调用那个new方法,在派生类调用方法new时,必须在前面加上关键字mybase,如:mybase.new

在派生类构造器中,调用基类构造器的语句必须放在第一行,否则产生语法错误,如果不需要参数,可以省略,但为了提高代码的可读性,一般还是显式的调用mybase.new

继承和析构器方法

vb.net不能象调用基类构造器函数那样自动调用基类析构器,如下例:

Public Class Form1
    Inherits System.Windows.Forms.Form

#Region " Windows 窗体设计器生成的代码 "

#End Region
    Class a
        Public Sub New()
            MsgBox("class a new")
        End Sub
        Protected Overrides Sub finalize()
            MsgBox("class a finalize")
        End Sub
    End Class
    Class b
        Inherits a
        Public Sub New()
            MsgBox("class b new")
        End Sub
        Protected Overrides Sub finalize()
            MsgBox("class b finalize")
            MyBase.Finalize()
        End Sub
    End Class
    Class c
        Inherits b
        Public Sub New()
            MsgBox("class c new")
        End Sub
        Protected Overrides Sub finalize()
            MsgBox("class c finalize")
            MyBase.Finalize()
        End Sub
    End Class

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim s As New c
    End Sub
End Class

.net环境中的所有类都是从system.object类派生来的,在覆盖基类函数和子例程的时候必须把overrides放在方法的定义中,在派生类覆盖基类定义之前,基类也必须声明它的方法定义是可覆盖的,即在方法定义中放入关键字overrides,这种能够被派生类覆盖的方法叫虚拟函数。

### 解决 Tailwind CSS 样式不生效的方法 #### 1. 配置文件检查 确保 `tailwind.config.js` 文件配置正确。如果缺少必要的配置项,可能会导致部分样式无法正常加载。例如,确认已设置 purge 或 content 字段来指定要扫描的模板文件路径[^1]。 ```javascript // tailwind.config.js module.exports = { content: [ './src/**/*.{html,js,vue}', // 确认此路径匹配所有需处理的源码位置 ], } ``` #### 2. PostCSS 设置验证 核实项目的 PostCSS 配置是否包含了 Tailwind 插件,并且顺序无误。错误的插件链可能导致最终编译出来的 CSS 出现问题。 ```diff // postcss.config.js module.exports = { plugins: [ + require('tailwindcss'), + require('autoprefixer'), // 自动添加浏览器前缀支持 ] }; ``` #### 3. 类名拼写准确性核对 仔细审查 HTML/JSX/Vue 模板中的类名书写是否有误。由于 Tailwind 是基于实用程序优先的原则构建而成,任何细微差异都可能造成预期之外的效果。 #### 4. 浏览器缓存清理 有时旧版本资源仍被浏览器缓存着,尝试清除浏览数据或强制刷新页面 (Ctrl+F5),以便查看最新更改后的效果[^2]。 #### 5. UI 库冲突排查 对于已经存在其他第三方UI框架的应用来说,在集成 Tailwind 后容易引发样式覆盖现象。可以考虑调整全局样式的优先级,或是通过更具体的 CSS Selectors 来规避此类情况的发生;另外也可以探索官方文档中提到的相关解决方案[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值