abstract、virtual、sealed、 interface、struct 基础知识整理
abstract
|
abstract 修饰符指示被修改内容的实现已丢失或不完整。 abstract 修饰符可用于类、方法、属性、索引和事件。 在类声明中使用 abstract修饰符以指示某个类仅旨在作为其他类的基类。 标记为 abstract 的成员,或包含在抽象类中的成员,都必须由派生自抽象类的类来实现。 |
public abstract class Animal
{
public abstract void Breath();
} // Error 不能创建实例
Animal animal = new Animal(); public class Dog : Animal
{
public override void Breath()
{
System.Console.WriteLine("呼呼呼");
}
}
1.被 abstract 修饰的Animal类是不完整的,所以不能创建实例,只能被继承。
2.被 abstract 修饰的Breath方法内容已丢失,所以并没有方法主体,必须在基类中重写。
virtual
| virtual关键字用于修改方法、属性、索引器或事件声明,并使它们可以在派生类中被重写。 |
public abstract class Animal
{
public virtual void Breath()
{
System.Console.WriteLine("深呼吸~");
}
}
public class Dog : Animal
{
public override void Breath()
{
System.Console.WriteLine("旺旺旺");
}
} Dog dog = new Dog();
dog.Breath();
1.被virtual修饰的Breath方法,必须有方法体。在基类中可以重写,也可以不重写。
interface
|
接口只包含方法、属性、事件或索引器的签名。 实现接口的类或结构必须实现接口定义中指定的接口成员。 |
public interface ISampleInterface
{
void SampleMethod();
} public class ImplementationClass : ISampleInterface
{
public void SampleMethod()
{
//
}
}
1.interface 中的方法不能包含方法体。
2.在基类中必须实现接口定义的成员。
sealed
|
应用于某个类时,sealed修饰符可阻止其他类继承自该类。 应用于方法或属性时,sealed修饰符必须始终与 override 结合使用。 |
public sealed class Dog : Animal
{
public override void Breath()
{
System.Console.WriteLine("旺旺旺");
}
} public class Dog1 : Dog
{
// cannot inherit from sealed class 'Dog'
}
public class Animal
{
public virtual void Breath()
{
}
}
public class Dog : Animal
{
public sealed override void Breath()
{
System.Console.WriteLine("旺旺旺");
}
} public class BigDog : Dog
{
public override void Breath()
{
// Error : Dog.Breath() 是密封的,无法重写
}
}
struct
|
struct 是一种值类型,通常用来封装小型相关变量组。 struct 也可以实现接口,且实现方法与类相同。 struct 可以包含构造函数、常量、字段、方法、属性、索引器、运算符、事件和嵌套类型,但如果同时需要上述几种成员,则应当考虑改为使用类作为类型。 |
public struct Book
{
public decimal price;
public string title;
public string author; // 构造函数必须有参数,在构造函数中必须给所有成员赋值。
public Book(decimal price,string title , string author)
{
this.price = price;
this.title = title;
this.author = author;
}
} var b = new Book(100M,"和谐","布吉岛");
https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/
| 本文博客园地址:http://www.cnblogs.com/struggle999/p/7055787.html |
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
abstract、virtual、sealed、 interface、struct 基础知识整理的更多相关文章
- 【OGG】OGG基础知识整理
[OGG]OGG基础知识整理 一.GoldenGate介绍 GoldenGate软件是一种基于日志的结构化数据复制软件.GoldenGate 能够实现大量交易数据的实时捕捉.变换和投递,实现源数据库与 ...
- Kali Linux渗透基础知识整理(四):维持访问
Kali Linux渗透基础知识整理系列文章回顾 维持访问 在获得了目标系统的访问权之后,攻击者需要进一步维持这一访问权限.使用木马程序.后门程序和rootkit来达到这一目的.维持访问是一种艺术形式 ...
- Kali Linux渗透基础知识整理(二)漏洞扫描
Kali Linux渗透基础知识整理系列文章回顾 漏洞扫描 网络流量 Nmap Hping3 Nessus whatweb DirBuster joomscan WPScan 网络流量 网络流量就是网 ...
- java部分基础知识整理----百度脑图版
近期发现,通过百度脑图可以很好的归纳总结和整理知识点,本着学习和复习的目的,梳理了一下java部分的知识点,不定期更新,若有不恰之处,请指正,谢谢! 脑图链接如下:java部分基础知识整理----百度 ...
- C#基础知识整理
年时,北风吹雁雪纷纷,一条秋裤冻上头.冷的连手都懒得动,就随便翻翻书,也没有更新博客,如今年已过,开始投入到正常的工作状态中,趁现在需求还没有来,把C#基础知识梳理一下,其实一直以来就想这样做的,对于 ...
- wifi基础知识整理
转自 :http://blog.chinaunix.net/uid-9525959-id-3326047.html WIFI基本知识整理 这里对wifi的802.11协议中比较常见的知识做一个基本的总 ...
- JavaScript基础知识整理
只整理基础知识中关键技术,旨在系统性的学习和备忘. 1.在 JScript 中 null 和 undefined 的主要区别是 null 的操作象数字 0,而 undefined 的操作象特殊值NaN ...
- Oracle ASM 磁盘组基础知识整理(收藏版)
转至:https://cloud.tencent.com/developer/article/1494403 为什么要写这么一篇基础知识呢?还是有那么一点点原因的,不是胡编乱造还真是有真实存在的事件的 ...
- Linux基础知识整理
一.基础知识 1.Linux简介 Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件 ...
随机推荐
- gd_t , bd_t 结构分析
在分析板级初始化函数board_init_f 和 board_init_r 之前,先来看一下在uboot中颇为重要的 gd_t, bd_t 结构 bd_t 所对应的定义bd_info 在 arch/a ...
- 2019年Python数据挖掘就业前景前瞻
Python语言的崛起让大家对web.爬虫.数据分析.数据挖掘等十分感兴趣.数据挖掘就业前景怎么样?关于这个问题的回答,大家首先要知道什么是数据挖掘.所谓数据挖掘就是指从数据库的大量数据中揭示出隐含的 ...
- linux获取当前系统的时间
#include <time.h> #include <sys/time.h> void sysLocalTime(char *str_info) { time_t times ...
- NCUAP 利用java自带方法实现导入excel取数据
final JComponent parent = getModel().getContext().getEntranceUI(); JFileChooser chooser = new JFileC ...
- 查找 管道 exec
#查找150天为使用的文件并列出find -type f -mtime +150 -exec ls -ltr {} \;#查找150天内120外的文件find -type f -mtime -150 ...
- javaScript 字符串
var name = '小明'; var age = 20; var message = '你好, ' + name + ', 你今年' + age + '岁了!'; alert(message) 要 ...
- 主键生成策略sequence
http://blog.csdn.net/shanhuhau/article/details/24978253 表示:如果不写序列名,会走默认的序列 若写,则seq_表名_属性名
- 参考文献bib管理
比如在IEEE模板中,在当前目录添加 bib 文件reference.bib 在 \end{document} 之前加入 \bibliographystyle{IEEEtran} \bibliogra ...
- qhfl-3 Course模块
课程模块,包括免费课程以及专题课程两个,主要是课程的展示,点击课程进入课程详细页面 根据功能设计表结构 为了方便,每张表在数据库中添加了中文名 from django.db import models ...
- 学以致用十九-----shell脚本之引号
shell脚本中引号也是有讲究的. 可以分为单引号‘ ’,双引号“ ”和 反引号 ` ` 具体区别来看一个例子 输出结果 可得出结论 1. 单引号括起来的字符都作为普通字符出现,如第4,7,10,13 ...