C# 类中隐藏基类方法和Partial
今天对于.NET开发人员来说最开心的事情莫过于微软搞开源了,这觉得是给搞.NET开发的长脸。虽然我是一个初学者,这无疑给我极大的学习动力。Fighting!!!
当一个类从父类继承了一个成员时,也就继承了它的执行代码,如果成员时虚拟的,我们可以用override重写这段执行代码。但无论他是否是虚拟的,都可以通过new 关键字来隐藏它。例如:
public class BaseClass
{
public void DoSomething()
{
//执行代码
}
}
public class ChildClass:BaseClass
{
new public void DoSomething()
{
//隐藏基类的DoSomething方法
}
}
如果不使用new关键字的话,编译器会警告,说隐藏了基类成员。这样当我们不想继承的方法像基类那样运行我们就可以隐藏它。
有如下两个类:
public class BaseClass
{
public virtual void DoSomething()
{
Console.WriteLine("Base Function!");
}
} public class ChildClass:BaseClass
{
new public void DoSomething()
{
Console.WriteLine("Child Function!");
}
}
我们用下面的代码调用它们
ChildClass child= new ChildClass();
BaseClass baseClass;
baseClass = child;
baseClass.DoSomething();
结果为
BaseFunction!
如果我们不使用new关键字,而是用override重写基类的方法,那么我们得到的结果应该是“Child Function!”。
Partial定义部分类和部分方法
我们可以通过Partial来定义一个类,通过这个关键字我们可以在一个文件中定义字段、属性和构造函数,而在另外的一个文件中定义其方法。
public partial class MyClass
{
//部分类定义
}
在windows窗体应用程序中就用到了部分类的定义,Windows窗体的代码分别在Form.cs和Form.Designer.cs中。
对于方法我们同样可以在不同的部分类中定义,在一个部分类中声明它,在另外一个部分类中实现,例如像下面的代码:
public partial class MyClass
{
partial void MyPartialMethod();
} public partial class MyClass
{
partial void MyPartialMethod()
{
//方法的实现
}
}
C# 类中隐藏基类方法和Partial的更多相关文章
- Object类中wait代餐方法和notifyAll方法和线程间通信
Object类中wait代餐方法和notifyAll方法 package com.yang.Test.ThreadStudy; import lombok.SneakyThrows; /** * 进入 ...
- C#在派生类中调用基类成员
一.在派生类中调用基类成员 在C#的派生类中,我们可以使用base关键字调用基类中的公有或者受保护成员.这些成员只能是构造函数.实例方法或者实例属性. base关键字调用基类成员的语法格式如下: ba ...
- C#派生类中使用基类protected成员的方法
我们知道C#中通过继承可以使一个具有公共数据和方法的基类被广泛应用从而减少代码量,这样派生类会具有基类中所有成员(除构造器等),我们理所当然可以通过派生类实例来使用基类的成员.那么当基类成员被prot ...
- C++ 继承 - 在派生类中对基类初始化
构造函数与基类的其他成员不同,不能被派生类继承,因此为了初始化基类中的成员变量,需要在派生类中调用基类的构造函数(即显式调用),如果派送类没有调用则默认调用基类的无参构造函数(即隐式调用). 显式调用 ...
- cc31a_demo--CppPrimer_静态成员与继承-在派生类中访问基类中的static成员的方法
//*基类中的static成员,在整个继承层次中只有一个实例 //*在派生类中访问基类中的static成员的方法 //1.基类名::成员名 //2.子类名::成员名 //3.对象.成员名 //4.指针 ...
- C#--类之隐藏基类的成员
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Object类中wait带参方法和notifyAll方法和线程间通信
notifyAll方法: 进入到Timed_Waiting(计时等待)状态有两种方式: 1.sleep(long m)方法,在毫秒值结束之后,线程睡醒,进入到Runnable或BLocked状态 2. ...
- C#继承机制 访问与隐藏基类成员
(1) 访问基类成员 通过base 关键字访问基类的成员: 调用基类上已被其他方法重写的方法. 指定创建派生类实例时应调用的基类构造函数. 基类访问只能在构造函数.实例方法或实例属性访问器中进 ...
- 不可或缺 Windows Native (21) - C++: 继承, 组合, 派生类的构造函数和析构函数, 基类与派生类的转换, 子对象的实例化, 基类成员的隐藏(派生类成员覆盖基类成员)
[源码下载] 不可或缺 Windows Native (21) - C++: 继承, 组合, 派生类的构造函数和析构函数, 基类与派生类的转换, 子对象的实例化, 基类成员的隐藏(派生类成员覆盖基类成 ...
随机推荐
- 解决ajax回调函数无返回值得问题
这里以编辑验证角色名为例: 首先,定义一个flag全局变量. 然后,在回调函数resp()中根据判断将flag的值设为true或false. 最后,在调用函数ckrname()中,return fla ...
- Window Pains
http://poj.org/problem?id=2585 Window Pains Time Limit: 1000MS Memory Limit: 65536K Total Submissi ...
- Python 2.x and 3.x String VS Bytes
In Python 3 unicode strings are the 'regular strings' (str) and byte strings are separate objects. L ...
- 【VMware虚拟化解决方案】设计和配置VMware vCenter 5.5
在这之前,我们已经对VMware ESXi 5.5进行了整个环境的设计和规划,虽然安装VMware ESXi 5.5在CPU的选型.网络的设计.共享存储的方式.虚拟化资源的需求和安装ESXI的模式等一 ...
- 关于环信的WebIm的SDK一些使用注意
先打自己几下脸,不好好看接口文档,啪啪啪. 主要先说下回调,直接先copy文档的 conn.listen({ onOpened: function ( message ) { //连接成功回调 //以 ...
- XP下Winform背景透明问题
win 7上usercontrol控件背景色设置为透明,显示无异常.到XP上一看,变成Control颜色了,即常见的灰色.网上搜了一堆,没发现有用的.偶然看到XP上Label的背景色可以透明,于是用L ...
- ASP常用函数
取得IP地址 '******************************************************************* Function Userip() Dim Ge ...
- Jquery选择器 讲解
在Dom 编程中我们只能使用有限的函数根据id 或者TagName 获取Dom 对象. 然而在jQuery 中则完全不同,jQuery 提供了异常强大的选择器用来帮助我们获取页面上的对象, 并且将对象 ...
- Android 命令行编译、打包生成apk文件
一.搭建搭建环境 1. 安装JDK 和 Android SDK 2. 配置环境变量 D:\android-sdk-windows\tools C:\Program Files\Java\jdk1. ...
- c# using 引用和别名的使用
1.使用别名 在同时引用的两个命名空间中有相同的类型时,可以使用别名来区分.如下所示: using System; using System.Threading; using System.Timer ...