vb.net继承的规则

用户可以使用一个新的关键字"Inherts"在一个基本的类的基础上去建立一个新的类,则继承类可以继承,扩充基本类的属性、方法、事件、数据成员和事件处理程序。
vb.net引入以下表述来支持继承的表述:
(1)Inherits表述--用来说明当前的类是继承了哪一个已经存在的类(基本类),Inherits只有在类中才能使用。
(2)NotInheritalbe modifier--防止程序把一个类作为一个基本类。
(3)MustInherit modifier--声明这个类是不能创建的,必须继承下来的,惟一一种可以使用该类的方法就是继承它。
新的继承的类可以重载一些基本的方法,vb.net使用以下这些关键字来控制属性和方法的重载:
(1)Overridable--允许一个属性或者方法在继承类中可以重载。公用的方法的缺省的值为NotOverridable。
(2)Overrides--允许用户重载一个基本类的属性或者是方法。
(3)NotOverridable(缺省)--防止一个属性或方法在继承类中被重载。
(4)MustOverride--当该关键字被使用时,需要继承的类一定要把该属性或方法重载,其中方法的表述只包括Sub,Function或者Property。
注意:其他的描述是不允许的,这里没有End Sub、End Function描述。有MustOverride方法的类必须被声明为MustInherit,公有的方法的缺省值为NotOverridable.
并且关于继承,还有以下准则:
(1)虽然,一个继承类只能够从一个类继承而来,但是它可以产生无数个接口。
(2)一个公有的类不能继承一个friend的或者私有的类,而且一个friend类不能继承一个私有的类。
1.使用Mybase访问基本类的方法
当用户在继承类中重载基本类的方法时,可以使用Mybase调用基本类中的方法,以下的表述将向用户提供关于Mybase的一些更详细的描述。
(1)MyBase是对基本的类和它的继承成员的引用。
(2)在MyBase中限定的一些方法,没有必要在Mybase中再进行定义;它可以间接地在继承类中进行定义,为了使Mybase可以正确地引用和编译,一些基础类必须在引用时包含一个和其参数名称和类型匹配的方法。
(3)Mybase不能用来限定本身,所以下面的描述是错误的:
MyBase.MyBase.BtnOK_Click()
(4)MyBase是一个关键字。
(5)MyBase不能被用成一个变量或者是过程,或者用在"IS"比较中,MyBase并不是一个真正的对象。
(6)MyBase可以被用作一个共享成员(shared members);这时它是有值的,因为共享成员是可以被shadowed。
(7)MyBase不能在模块中使用。
2.使用MyClass
(1)MyClass允许调用一个可以重载的方法,并且确认调用的是方法里的implementation过程,而不是继承类里的重载的方法,以下的使用方法是合法的,用MyClass在一个类中去限定一个方法,这个方法在基本类里面有定义,但是在这个类中没有这个方法的定义。这种引用和MyBase.Method具有一样的意义。
(2)MyClass是一个关键字。
(3)MyClass不能被用成一个变量,或者是过程,或者用在"Is"比较中,MyClass并不是一个真正的对象。
(4)MyClass可以引用包含的类以及它的继承成员,并且能够被用作访问在类中定义的公有的成员,但是不能访问类中的私有成员。
(5)MyClass可以被用作共享成员的限定。
(6)MyClass不能被用在标准模块中。

时间: 2024-09-20 18:17:18

vb.net继承的规则的相关文章

ckeditor net-vs2013 类型“CKEditor.NET.CKEditorControlDesigner”违反了继承安全性规则

问题描述 vs2013 类型"CKEditor.NET.CKEditorControlDesigner"违反了继承安全性规则 把项目从vs2010迁移到vs2013,编译出错 具体错误信息为: Reference.svcmap: 类型"CKEditor.NET.CKEditorControlDesigner"违反了继承安全性规则.派生类型必须与基类型的安全可访问性匹配或者比基类型的安全可访问性低. 有人碰到过类似问题没有,大仙都帮帮忙,在下先谢谢了!

类型“XXX”违反了继承安全性规则。派生类型必须与基类型的安全可访问性匹配或者比基类型的安全可访问性低。

原文 http://help.jumbotcms.net/detail_2012_08/15/10402.shtml 当项目升级到VS2010或者2012 后(同时NET版本也升级到4.0),会出现如下错误提示信息: 类型"XXX"违反了继承安全性规则.派生类型必须与基类型的安全可访问性匹配或者比基类型的安全可访问性低.    解决方法1: 其实很简单,在XXX项目中AssemblyInfo.cs文件里加上如下信息即可: [assembly: System.Security.Secur

vb.net继承的例子

这次列举一个在窗体上画出一些图形,如:长方形.正方形等的例子. 在vb.net中,控件可以被Windows系统重新绘制,用户可以通过重载OnPaint事件来画自己的图形.PaintEventArgs是系统底层调入子例程的一个对象,用户可以通过这个对象在窗体的表面画一些图形,用户还需要建立一个Pen对象,它的颜色的缺省值是黑色,线条的宽度的缺省值是1.下面这个例子说明了这个对象的用法. Protected Overrides Sub OnPaint(e as PaintEventArgs) Dim

代码重构(五):继承关系重构规则

陆陆续续的发表了多篇关于重构的文章了,还是那句话,重构是一个项目迭代开发中必不可少的一个阶段.其实重构伴随着你的项目的整个阶段.在前几篇关于重构的文章中我们谈到了函数的重构.类的重构.数据的重构以及条件表达式的重构,那么今天咱们就来聊聊继承关系的重构.当然还是延续前几篇博客的风格,我们在博客中的代码实例依然使用Swift语言来实现,当然还是那句话,使用什么语言无所谓,关键是看重构的场景以及重构的思想. "重构"不仅仅可以改善你既有的代码设计,还可以改变你组织代码的思路,使你的程序在设计

VB.Net中文教程(6) 母子对象关系

对象|教程|中文 1. 特殊Whole-Part关系 ---- 母子对象关系 大家已经熟悉父子类别关系﹐也就是「继承」关系了.于此说明另一种常见关系── 母子对象.一般称之为「组合/部分」关系.日常生活中﹐处处可见到这种母子对象.例如﹐客厅内有沙发.桌子.椅子等等.客厅是母对象﹐沙发.桌子.椅子是子对象.再如计算机屏幕上的窗口内有按钮.选择表.对话盒等等.窗口是母对象﹐按钮.选择表是子对象.于此将说明如何建立母子对象关系.有了关系﹐母子就能互相沟通了.母子对象之间﹐如何沟通呢﹖也就是说﹐母对象如

文件和目录的访问控制(4) 审核规则

到目前为止,只是讨论了访问控制规则,它们构成了对象的DACL.DACL可以由对象的所有者任意更改,还可以由所有者已经给予其更改DACL权限的任何人更改.对象的安全描述符包含另一个规则列表,称为系统访问控制列表(System Access Control List,SACL),该列表将控制系统对对象执行哪个类型的审核. 审核是一种具有安全敏感性的操作.在Windows中,审核只能由本地安全机构(Local Security Authority,LSA)生成,因为LSA是唯一允许向安全事件日志(这里

文件和目录的访问控制(3) 访问规则

访问规则有两种类型:"允许"(allow)和"拒绝"(deny).可以通过检查规则的AccessControlType属性来确定相应规则的类型.按照约定,拒绝规则总是优先于允许规则.因而,如果向某个对象中添加下列两个规则:"授予每个人读.写访问权限"和"拒绝Xuanhun写访问权限",则Xuanhun将被拒绝进行写访问. 想要枚举文件或者目录的访问规则时,可以使用如代码清单7-11所示的方式. 7-11  枚举文件访问规则 c

接口继承的声明问题

某天,小新问我这样一个问题: 类System.Collections.CollectionBase是从IList.ICollection继承而来,IList是从ICollection和IEnumerable继承而来,那CollectionBase为什么还要从ICollection继承呢? 我们先来看看这些类和接口在MSDN文档中的声明: public interface IEnumerable public interface ICollection : IEnumerable public i

AngularJS深入探讨scope,继承结构,事件系统和生命周期_AngularJS

本文实例讲述了AngularJS的scope,继承结构,事件系统和生命周期.分享给大家供大家参考,具体如下: 深入探讨 Scope 作用域 每一个 $scope 都是类 Scope 的一个实例.类 Scope 拥有可以控制 scope 生命周期的方法,提供事件传播的能力,并支持模板渲染. 作用域的层次结构 让我们再来看看这个简单的 HelloCtrl 的例子: var HelloCtrl = function($scope){ $scope.name = 'World'; } HelloCtrl