virtual abstract override new 几点学习
1、Vitual方法和普通方法区别为:继承其的子类可以用override/new在重载此方法,也可以不重载其方法,有方法体(可以写语句),override修饰则调用子类方法
2、abstract类中抽象方法无方法体(只有名称)、普通方法(静态方法,无修饰的方法,Virtual方法)可以有方法体,其他类的基类,继承其的子类必须实现所有抽象方法
3、abstract类无法实例化,可以继承接口
4、抽象方法是隐式的虚方法,可以被基类修饰为virtual方法
5、抽象方法只能在抽象类中,可以被override,不可以用new
7、Override方法必须和其父类方法具有相同的签名(函数名、返回值、参数列、访问权限 如:public)
8、Override方法无法重写非virtual方法和static修饰的方法
9、Override方法不能用此修饰符:new static virtual abstract
10、sealed类(密封类)无法被继承 sealed方法必须和override连起来修饰(如:sealed protected override void F(){}),实现sealed方法类的父类必须实现了此方法(存在),密封方法其本身无法再任何派生类中被重写
11、new 如果父类方法里面是new 子类必须用new修饰,如果子类是private修饰,则直接调用父类的new方法,否则调用子类new方法,子类new方法可以重写父类virtual方法,new方法,override方法,不可以写抽象方法
12、只有override方法才可以用sealed修饰 //只有重写方法才能密封
virtual abstract override new 几点学习的更多相关文章
- C#--virtual,abstract,override,new,sealed修饰符学习
1.参考博客 http://www.cnblogs.com/oneword/archive/2009/07/02/1515279.html http://www.cnblogs.com/mygood ...
- C#--virtual,abstract,override,new,sealed
virtual:使用此关键字,可以使其在派生类中被重写. abstract:抽象方法,由子类重写,或继续为抽象方法存在,并由其子子类实现. override: 重写父类方法,属性,或事件的抽象实现或虚 ...
- 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 ...
- new、virtual、override
我们先看下面一段程序: public class Father { public void Run0() { Console.WriteLine("Father.Run0"); } ...
随机推荐
- HttpPostedFile类
在研究HttpRequest的时候,搞文件上传的时候,经常碰到返回HttpPostedFile对象的情况,这个对象才是真正包含文件内容的东西. 经常要获取的最重要的内容是FileName属性与Sava ...
- Fix Visual Studio 2013 Razor CSHTML Intellisense in Class Library or Console Application
https://mhusseini.wordpress.com/2015/02/05/fix-visual-studio-2013-razor-cshtml-intellisense-in-class ...
- CSS Grid布局入门
相信大家都比较熟悉flex布局了,最近有空研究了波grid布局,感觉虽然兼容性还不是太高,应用不是太普遍,但是功能非常强大.未来应该是grid+flex为主流,grid是二维布局,很灵活,适合整体构架 ...
- ALGO-4_蓝桥杯_算法训练_结点选择
问题描述 有一棵 n 个节点的树,树上每个节点都有一个正整数权值.如果一个点被选择了,那么在树上和它相邻的点都不能被选择.求选出的点的权值和最大是多少? 输入格式 第一行包含一个整数 n . 接下来的 ...
- 【EasyUI学习-3】Easyui tabs入门实践
作者:ssslinppp 1. 摘要 一般我们在设计程序主框架的时候,当点击(子)菜单时,希望相应界面都在tabs页中显示: 在显示的时候,如果之前打开过该界面,则希望重新选中对应的tab ...
- java web 程序---jsp连接mysql数据库的实例基础+表格显示
<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="g ...
- java study1
java安装 java优势-跨平台:一次编写,到处运行. jdk开发工具包,提供了开发人员需要的开发工具.jdk中包含了jre jre java的运行环境,负责程序的运行,jre中,包含程序运行时需要 ...
- [UE4]FString常用API
转自:http://aigo.iteye.com/blog/2279808 将int或float转换为string: 将FString转换为char*: 将string转换为int或者float: 字 ...
- Ubuntu14.04下codeblocks手动编译配置bost_1_57_0
环境:ubuntu 14.04 32bit,boost_1_57_0 前期准备:boost中,用到了别的函数库,所以为了使用boost中相应的功能,需要先安装系统中可能缺失的库 apt-get in ...
- 管道(pipe),进程之间的共享内存(Manager,Value)
1 管道(了解) from multiprocessing import Pipe con1,con2 = Pipe() 管道是不安全的. 管道是用于多进程之间通信的一种方式. 如果在单进程中使用管道 ...