C#--virtual,abstract,override,new,sealed
virtual:使用此关键字,可以使其在派生类中被重写.
abstract:抽象方法,由子类重写,或继续为抽象方法存在,并由其子子类实现.
override: 重写父类方法,属性,或事件的抽象实现或虚方法.
new:显式隐藏从父类继承的成员.
后台代码:
public abstract class Animal
{
public abstract void Eat(); public virtual void Sleep()
{
HttpContext.Current.Response.Write("动物正在睡觉!<hr/>");
}
} public class Horse : Animal
{
public override void Eat()
{
HttpContext.Current.Response.Write("马在吃草!<br/>");
} public override void Sleep()
{
HttpContext.Current.Response.Write("马是站着睡觉!<hr/>");
}
} public class Cat : Animal
{
public override void Eat()
{
HttpContext.Current.Response.Write("猫在吃食!<br/>");
} public new void Sleep()
{
HttpContext.Current.Response.Write("猫是趴着睡觉的!<hr/>");
}
}
| 前台调用 | 效果 |
protected void Page_Load(object sender, EventArgs e) |
补充:
当sealed修饰方法时,sealed必须与override一起使用.
sealed将使您能够允许类从您的类继承,并防止它们重写特定的虚方法或虚属性
public class Cat : Animal
{
public sealed override void Eat()
{
HttpContext.Current.Response.Write("猫在吃食!<br/>");
} public new void Sleep()
{
HttpContext.Current.Response.Write("猫是趴着睡觉的!<hr/>");
}
} public class LitCat : Cat
{
public new void Sleep()
{
HttpContext.Current.Response.Write("猫是趴着睡觉的!<hr/>");
}
}此时,在LitCat类中,就不会出现override Eat方法了.
C#--virtual,abstract,override,new,sealed的更多相关文章
- C#--virtual,abstract,override,new,sealed修饰符学习
1.参考博客 http://www.cnblogs.com/oneword/archive/2009/07/02/1515279.html http://www.cnblogs.com/mygood ...
- virtual abstract override new 几点学习
1.Vitual方法和普通方法区别为:继承其的子类可以用override/new在重载此方法,也可以不重载其方法,有方法体(可以写语句),override修饰则调用子类方法2.abstract类中抽象 ...
- C#多态;父类引用指向子类对象;new和override的区别;new、abstract、virtual、override,sealed关键字区别和使用代码示例;c#类的初始化顺序
关于父类引用指向子类对象 例如: 有以下2个类 public class Father { public int age = 70; public static string name = " ...
- virtual abstract override
virtual和abstract都是用来修饰父类的,通过覆盖父类的定义,让子类重新定义. 它们有一个共同点:如果用来修饰方法,前面必须添加public,要不然就会出现编译错误:虚拟方法或抽象方法是不能 ...
- [C#] 區分 abstract、virtual、override 和 new
abstract.virtual.override和new是在類別的繼承關係中常用的四個修飾方法的關鍵字,在此略作總結. 1. 常用的中文名稱: n abstract => 抽象方法. n ...
- error C2253: pure specifier or abstract override specifier only allowed on virtual
1.用Visual Studio 2012编译下面代码时出现的错误: #define RTC_DISALLOW_COPY_AND_ASSIGN(TypeName) \ TypeName(const T ...
- c#和java中的方法覆盖——virtual、override、new
多态和覆盖 多态是面向对象编程中最为重要的概念之一,而覆盖又是体现多态最重要的方面.对于像c#和java这样的面向对象编程的语言来说,实现了在编译时只检查接口是否具备,而不需关心最终的实现,即最终的实 ...
- C#Virtual和Override的几种组合
情况1: class A{public void Show()} class B:A{public void Show()} 编译通过,有警告让在B的方法里添加new关键字,以便将A的方法隐藏 编译时 ...
- 快学Scala 第十九课 (trait的abstract override使用)
trait的abstract override使用: 当我看到abstract override介绍的时候也是一脸懵逼,因为快学scala,只介绍了因为TimestampLogger中调用的super ...
随机推荐
- 32位和64位adb下载及安装
一.已安装android sdk时 1.拷贝 从%ANDROID_HOME/platform-tools 下拷贝如下文件到/System32和/SysWOW64下即可. adb.exe AdbWinA ...
- ASP.net 中关于Session的存储信息及其它方式存储信息的讨论与总结
通过学习和实践笔者总结一下Session 的存储方式.虽然里面的理论众所周知,但是我还是想记录并整理一下.作为备忘录吧.除了ASP.net通过Web.config配置的方式,还有通过其它方式来存储的方 ...
- 转:VmWare下安装CentOS6图文安装教程
文章来自于:http://www.cnblogs.com/seesea125/archive/2012/02/25/2368255.html 查看文章索引请通过http://www.cnblogs.c ...
- ural 1723 Sandro's Book
http://acm.timus.ru/problem.aspx?space=1&num=1723 #include <cstdio> #include <cstring&g ...
- iOS 9之分屏多任务(Split View)
金田(github 示例源码) 多任务(multitasking)算是iOS9中最引人瞩目的核心新特性了,之前越狱版用户就用过类似的插件,微软的 苏菲 (Windows Surface)系列也有分屏多 ...
- js 数组引用 发现的问题
最近做项目时,要对返回的数据[保存在json数组中]做一次修改,但原数据要保留一次做备用.首先想到,原数据不动,用一个临时的变量来修改,大致模型就是这样: // 原始: a=[1,2,3,4,5,.. ...
- hadoop2.2.0的ha分布式集群搭建
hadoop2.2.0 ha集群搭建 使用的文件如下: jdk-6u45-linux-x64.bin hadoop-2.2.0.x86_64.tar zookeeper-3.4.5. ...
- 自己写的Ext树,Ext3.4,静态全部加载
var load = function(){ /** * 书籍资料目录 */ var bookIT = new Ext.tree.TreeNode({ text:"IT", lea ...
- JS(六)
没有视频看了,心里有点慌啊,像这种每天都会灌输很多知识的学习方式,我觉得提前预习真的是有奇效,不然不容易跟上老师的思维. 1.发送验证码:简单 <!DOCTYPE html> <ht ...
- bootstrap data
bootstrap data 用法 <div data-role="page" data-last-value="43" data-hidden=&quo ...