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 基础知识整理的更多相关文章

  1. 【OGG】OGG基础知识整理

    [OGG]OGG基础知识整理 一.GoldenGate介绍 GoldenGate软件是一种基于日志的结构化数据复制软件.GoldenGate 能够实现大量交易数据的实时捕捉.变换和投递,实现源数据库与 ...

  2. Kali Linux渗透基础知识整理(四):维持访问

    Kali Linux渗透基础知识整理系列文章回顾 维持访问 在获得了目标系统的访问权之后,攻击者需要进一步维持这一访问权限.使用木马程序.后门程序和rootkit来达到这一目的.维持访问是一种艺术形式 ...

  3. Kali Linux渗透基础知识整理(二)漏洞扫描

    Kali Linux渗透基础知识整理系列文章回顾 漏洞扫描 网络流量 Nmap Hping3 Nessus whatweb DirBuster joomscan WPScan 网络流量 网络流量就是网 ...

  4. java部分基础知识整理----百度脑图版

    近期发现,通过百度脑图可以很好的归纳总结和整理知识点,本着学习和复习的目的,梳理了一下java部分的知识点,不定期更新,若有不恰之处,请指正,谢谢! 脑图链接如下:java部分基础知识整理----百度 ...

  5. C#基础知识整理

    年时,北风吹雁雪纷纷,一条秋裤冻上头.冷的连手都懒得动,就随便翻翻书,也没有更新博客,如今年已过,开始投入到正常的工作状态中,趁现在需求还没有来,把C#基础知识梳理一下,其实一直以来就想这样做的,对于 ...

  6. wifi基础知识整理

    转自 :http://blog.chinaunix.net/uid-9525959-id-3326047.html WIFI基本知识整理 这里对wifi的802.11协议中比较常见的知识做一个基本的总 ...

  7. JavaScript基础知识整理

    只整理基础知识中关键技术,旨在系统性的学习和备忘. 1.在 JScript 中 null 和 undefined 的主要区别是 null 的操作象数字 0,而 undefined 的操作象特殊值NaN ...

  8. Oracle ASM 磁盘组基础知识整理(收藏版)

    转至:https://cloud.tencent.com/developer/article/1494403 为什么要写这么一篇基础知识呢?还是有那么一点点原因的,不是胡编乱造还真是有真实存在的事件的 ...

  9. Linux基础知识整理

    一.基础知识 1.Linux简介 Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件 ...

随机推荐

  1. 微软Office Online服务安装部署(三)

    现在开始配置两台服务器,两台服务器的IP: Server: 10.1.3.89 Client:  10.1.3.92 1.在Client中,.打开网络属性,找到ipv4的配置,将dns 改成域控制器的 ...

  2. Linux-目录结构及文件系统

    1.Linux 系统的顶层目录结构 /              根目录 ├── bin     存放用户二进制文件 ├── boot    存放内核引导配置文件 ├── dev     存放设备文件 ...

  3. javascript 新建实例对象

    在main js里面new 这样一个实例算怎么回事,如果不这么new, ToolBar里就会报错: Portal.gbl = { constants : new Portal.common.Const ...

  4. jQuery的介绍

    01-jQuery的介绍   1.为什么要使用jQuery 在用js写代码时,会遇到一些问题: window.onload 事件有事件覆盖的问题,因此只能写一个事件. 代码容错性差. 浏览器兼容性问题 ...

  5. NPOI 导入为table 处理excel 格式问题

    ICell cell = row.GetCell(j); if (!cell.isDbNullOrNull()) { switch (cell.CellType) { case CellType.Bl ...

  6. 【APP测试(Android)】--安装卸载

  7. Git的SSH-key生成、导入及使用

    Git主要使用4种协议传输数据:本地协议,SSH协议,Git协议和HTTP/S协议. SSH协议是最为常用的一种,正式介绍SSH之前,简要说明一下其它协议. 本地协议(file://) 本地协议的优点 ...

  8. TensorFlow数据读取

    TensorFlow高效读取数据的方法 TF Boys (TensorFlow Boys ) 养成记(二): TensorFlow 数据读取 Tensorflow从文件读取数据 极客学院-数据读取 十 ...

  9. SimpleDateFormat的parse(String str)方法的用法

    SimpleDateFormate 中的parse 方法可以将string类型的字符串转换成特定的date的特定类型.

  10. HQL数据查询基础

    HQL定义 1.Hibernate Query Language, Hibernate查询语言 2.HQL是面向对象的查询语言(HQL查询的主体是映射配置的持久化类及其属性而SQL查询主体是数据库表) ...