knowing abstract,virtual,override,new
- If a class has at least one member which modified by "abstract",this class is an abstract class and you have to modify this class using keyword "abstract", while the member is called "abstract member"(say,abstract method or abstract property).
- Actual implementation is not allowed in abstract members.
- An abstract class can not be instantiated.
- When a class inherits an abstract class, it must implement all base class's abstract members(for the abstract modifier can be used with classes, methods, properties, indexers, and events).
- The modifier "virtual" is just simply indicate that the method can be overrided in sub classes.Beside this,a virtual member(non-static methods,properties) is as the same as usual members.
- "override" is used to override base class's virtual or abstract members.
- "new" is used to cover base class's same-name members,but it won't override base class's anything.
example:
using System; namespace DesignPattern
{
public class A
{
public virtual void Bar()
{
Console.WriteLine("A.Bar");
} public void Foo()
{
Console.WriteLine("A.Foo");
} } class B:A
{
public override void Bar()
{
Console.WriteLine("B.Bar");
} public new void Foo()
{
Console.WriteLine("B.Foo");
} } class Program
{
static void Main(string[] args)
{
Console.WriteLine("----A1---");
A A1 = new A();
A1.Bar();//"A.Bar",for it's A.Bar
A1.Foo();//"A.Foo",for it's A.Foo
Console.WriteLine("---A2----");
A A2 = new B();
A2.Bar();//"B.Bar",for it has overrided father class's Bar
A2.Foo();//"A.Foo".in fact i don't really know why.
Console.WriteLine("---B1----");
B B1 = new B();
B1.Bar();//"B.Bar"
B1.Foo();//"B.Foo" Console.Read();
}
}
}
knowing abstract,virtual,override,new的更多相关文章
- C# abstract virtual override new finally java final finalize
virtual:声明虚方法.可以被其派生类所重写的.重写方法需要使用override或者new关键字. override:覆盖原方法.可对重写virtual.override.abstract进行重写 ...
- C# [method Modifiers] abstract virtual override new
abstract :表示方法是抽象方法,在子类中必须重写.抽象方法所在的类必须是抽象类,即用abstract modifiers:virtual:表示此方法是virtual方法,除了在子类中可以重写外 ...
- abstract,virtual,override个人
1.abstract 可以修饰类和方法,修饰方法时只声明不实现: 2.继承实现abstract类必须通过override实现abstract声明的方法,而virtual方法可选择override(重写 ...
- abstract,virtual,override
1.abstract 可以修饰类和方法,修饰方法时只声明不实现: 2.继承实现abstract类必须通过override实现abstract声明的方法,而virtual方法可选择override(重写 ...
- sealed、new、virtual、abstract与override 趣解
1. sealed——“断子绝孙” 密封类不能被继承.密封方法可以重写基类中的方法,但其本身不能在任何派生类中进一步重写.当应用于 方法或属性时,sealed修饰符必须始终与override一起使用. ...
- Modifiers: virtual, override, new, abstract, sealed, internal
internal 声明类.类成员.接口或接口成员具有内部可见性. internal 修饰符使类.接口或成员仅在当前包中可见. 当前包之外的代码不能访问 internal 成员.只有在同一程序集的文件中 ...
- sealed、new、virtual、abstract与override 总结
1. sealed——“断子绝孙” 密封类不能被继承.密封方法可以重写基类中的方法,但其本身不能在任何派生类中进一步重写.当应用于方法或属性时,sealed修饰符必须始终与override一起使用. ...
- abstract、override、new、virtual、sealed使用和示例
abstract修饰类名为抽象类,修饰方法为抽象方法.如果一个类为抽象类,则这个类智能是其他某个类的基类.抽象方法在抽象类中没有函数体.抽象类中的抽象方法是没有方法体的,继承其的子类必须实现抽象类的抽 ...
- 【C#】override,Abstract,Virtual 介绍及区别--转载
要扩展或修改继承的方法.属性.索引器或事件的抽象实现或虚实现,必须使用 override 修饰符. 1. override 方法提供从基类继承的成员的新实现.通过 override 声明重写的方法称为 ...
随机推荐
- 使用Depth Texture
使用Depth Textures: 可以将depth信息渲染到一张texture,有些效果的制作会需要scene depth信息,此时depth texture就可以派上用场了. Depth Text ...
- 初始化的一些问题(Vector使用)
import java.util.Vector; import java.util.Iterator; import java.util.Arrays; import java.util.ArrayL ...
- dpi 、 dip 、分辨率、屏幕尺寸、px、density 关系以及换算
一.基本概念 dip : Density independent pixels ,设备无关像素. dp :就是dip px : 像素 dpi :d ...
- WebStorm 9 自动编译 SCSS 产出 CSS 和 source maps
1. 上一节我们学习了Windows下搭建Ruby开发环境,也为这一节的学习做了铺垫.因为本节需要在Ruby环境下安装SASS.详细请见:http://www.cnblogs.com/wind128 ...
- 借助 CSS Colorguard 来避免使用重复的颜色
每一个 CSS 项目开始时愿望都是很美好的,但不可避免地,多人协作的项目相互之间可能重复使用了相似的颜色,而你从来不知道它们的存在.CSS Colorguard 帮助您保持您想要的颜色设置,当你添加的 ...
- redis学习之二from github
大概敲了一遍基本命令,熟悉了redis的存储方式.现在开始进一步系统的学习.学习教程目前计划有三个,一个是github上的https://github.com/JasonLai256/the-litt ...
- Auto Mapper04(MVC中的配置)
学习如何在MVC项目中配置AutoMapper. 一:首先在MVC项目中引用AutoMapper的DLL文件,接着创建一个接口,这里面我们需要定义两个方法,接口里面的方法只能定义不能实现,也没有什么修 ...
- dp --- hdu 4939 : Stupid Tower Defense
Stupid Tower Defense Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/ ...
- css异常
1.0 样式的引用顺序不对会导致样式显示不正常.个人推荐:把别人写好的样式引用在最前面,自己写的放在后面. 2.0 UC手机浏览器 UC手机浏览器在识别到页面文字很多的情况下会自动放大字体优化阅读体验 ...
- Nancy 学习-自宿主 继续跨平台
Nancy简介 Nancy是一个轻量级的独立的框架,下面是官网的一些介绍: Nancy 是一个轻量级用于构建基于 HTTP 的 Web 服务,基于 .NET 和 Mono 平台,框架的目标是保持尽可能 ...