C# Common Keyword
【C# Common Keyword】
1、abstract
Use the abstract modifier in a class declaration to indicate that a class is intended only to be a base class of other classes. Members marked as abstract, or included in an abstract class, must be implemented by classes that derive from the abstract class.
使用abstract修饰类,表示着该类只作为基类使用,无法生该类实例。用abstract修饰的方法,或方法在abstract class中,则子类必须实现这2种方法。
abstract和sealed不能同时使用。abstract意味着希望子类继承,sealed意味着禁止子类继承。
Use the abstract modifier in a method or property declaration to indicate that the method or property does not contain implementation.
abstract修饰方法,意味着方法缺少实现。
An abstract method is implicitly a virtual method.
子类实现abstract方法时,必须加上override。
抽象方法在抽象类中没有函数体。抽象类中的抽象方法是没有方法体的,继承其的子类必须实现抽象类的抽象方法。
抽象类有如下特征:
- 抽象类不能实例化
- 抽象类的派生类必须实现所有抽象方法
- 抽象类中的抽象方法是没有方法体的,继承其的子类必须实现抽象类的抽象方法
- 抽象方法是隐式的虚方法
- 只允许在抽象类中使用抽象方法声明
- 抽象方法在抽象类中没有方法体
- 在抽象方法声明中,不能使用static或者virtual修饰符
abstract class A //abstract 关键字在class前面
{
public abstract void run();//方法是将关键字abstract 添加到方法的返回类型的前面
}
2、override
abstract class A
{
public virtual void MethodA()
{
//do something
}
public abstract void run();
}
public class B:A
{
public override void MethodA()
{
//do somthing
}
public virtual void run()
{
//do something
}
}
3、virtual
virtual 关键字允许在派生类中重写这些对象。默认情况下,方法是非虚拟的,不可以重写非虚方法,virtual关键字不可以与static、abstract、private、override一起使用。virtual关键字又是和override紧密不可分的,如果要实现virtual方法就必须要使用override或new关键字。
4、sealed
class X
{
protected virtual void F() { Console.WriteLine("X.F"); }
protected virtual void F2() { Console.WriteLine("X.F2"); }
}
class Y : X
{
sealed protected override void F() { Console.WriteLine("Y.F"); }
protected override void F2() { Console.WriteLine("X.F3"); }
}
class Z : Y
{
// Attempting to override F causes compiler error CS0239.
// protected override void F() { Console.WriteLine("C.F"); }//sealed修饰的方法是不允许继承的
// Overriding F2 is allowed.
protected override void F2() { Console.WriteLine("Z.F2"); }
}
5、new 修饰符
在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员。隐藏继承的成员时,该成员的派生版本将替换基类版本。虽然可以在不使用 new 修饰符的情况下隐藏成员,但会生成警告。如果使用 new 显式隐藏成员,则会取消此警告,并记录要替换为派生版本这一事实。

参考:
1、http://blog.csdn.net/richerg85/article/details/7407544
2、http://msdn.microsoft.com/zh-cn/library/435f1dw2(v=vs.90).aspx
C# Common Keyword的更多相关文章
- C# Common Keyword II
[C# Common Keyword II] 1.as 运算符用于在兼容的引用类型之间执行某些类型的转换. class csrefKeywordsOperators { class Base { pu ...
- kaggle——TMDB 电影票房收入预测
介绍 看电影是目前人们休闲娱乐,消遣时光的选择之一.我们都知道,有些电影的票房很高,有的电影票房却很低,那么决定票房的因素是什么呢?本次将介绍,如何根据电影上映前的一些信息来预测出该电影的票房. 知识 ...
- [Javascript] Understand common misconceptions about ES6's const keyword
Values assigned with let and const are seen everywhere in JavaScript. It's become common to hear the ...
- Common Lisp中的读取宏 ' #' `( , ,@) #( ) #na( ) #<OBJECT> :Keyword
当你把 xx 当做符号使用时 'xx , 这个符号是没有任何函数/变量语义的, 仅仅是一个 符号而已(就像一个string一样) 但你可以对这个string有其他的用法,比如使用它所bind ...
- Mvc4 Layout布局与页面SEO信息title,keyword,description
工作已经五个年头了,在进入工作岗位时最初在.net 2.0平台一直到现在的.net 4.0平台下,开发了不少的winform.webform项目:五年的工作时间,在公司主持开发和维护了不少的电子商务w ...
- Elixir's keyword lists as option parameters
备注: 文章转自:https://www.djm.org.uk/posts/writing-extensible-elixir-with-behaviours-adapters-pluggable-b ...
- Java Threads - The volatile keyword
在网上看到很多关于 volatile 关键字的说明和使用问题, 今天引用Java Threads中的解释,感觉全面而详细,可惜是英文的. 这里很清晰的揭示了volatile 本身并不处理java读取数 ...
- SQL common keywords examples and tricks
Case Sensitive Check 1. Return names contain upper case Select id, name from A where name<>low ...
- Socket聊天程序——Common
写在前面: 上一篇记录了Socket聊天程序的客户端设计,为了记录的完整性,这里还是将Socket聊天的最后一个模块--Common模块记录一下.Common的设计如下: 功能说明: Common模块 ...
随机推荐
- 配置spring上下文
<context-param> <param-name>contextConfigLocation</param-name> <param-value> ...
- hdu1828(线段树+扫描线)
又知道了线段树的一种用法,除了单点更新,区间更新,还有这种在一段线段上标号但不往下推. 真是神奇 hdu1828 #include <iostream> #include <stdi ...
- (转载)C语言预处理
C程序的源代码中可包括各种编译指令,这些指令称为预处理命令.虽然它们实际上不是C语言的一部分,但却扩展了C程序设计的环境.本节将介绍如何应用预处理程序和注释简化程序开发过程,并提高程序的可读性.ANS ...
- IOS中导航控制器的代理及隐藏控制器刚出现时的滚动条
一.导航控制器的代理 1.UINavigationController的delegate属性 2.代理方法 1> 即将显示新控制器时调用 /* navigationController : 导航 ...
- Android解惑 - 为什么要用Fragment.setArguments(Bundle bundle)来传递参数(转)
Fragment在Android3.0开始提供,并且在兼容包中也提供了Fragment特性的支持.Fragment的推出让我们编写和管理用户界面更快捷更方便了. 但当我们实例化自定义Fragmen ...
- java监测方法运行时间/效率方法
前言: 这周在写一个小项目,虽然小但是是纯调外部接口的,调完了接口还不停的循环接口返回的数据(已转换JSONArray),然后再判断值,再做不同处理,关键是数据量还比较大,这刚做完还没开始上线,测试也 ...
- 【转】Android屏幕适配全攻略(最权威的官方适配指导)
原文网址:http://blog.csdn.net/jdsjlzx/article/details/45891551 Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的 ...
- pageX,clientX,offsetX,layerX的区别
pageX,clientX,offsetX,layerX的区别 在各个浏览器的JS中,有很多个让你十分囧的属性,由于各大厂商对标准的解释和执行不一样,导致十分混乱,也让我们这些前端攻城狮十分无语和纠结 ...
- WCF服务通过防火墙怎么设置
设置防火墙 1.首先点击控制面板->系统与安全->Window防火墙->点击允许程序通过Windows防火墙 2.查找Windows Communication Foundation ...
- 因為 Hypervisor 未執行,所以無法啟動虛擬機器
bcdedit /set hypervisorlaunchtype auto https://technet.microsoft.com/zh-tw/magazine/2009.02.hyperv.a ...