这么半天说了如何使用,实现接口。相信也都发现了接口和抽象类很多相似的地方。

但是!

这两个根本就是不一样的。

抽象类 :                                                                      接口:

可以实现代码【非抽象方法】                                   不可以实现任何代码

唯一继承                                                                       多次继承

继承会延续下去                                                           继承只会存在与第一次继承

这个基本就是这两个最大的区别

那么 接口的实现和抽象类的重写是差不多的吗?

其实还是不一样的。

抽象类的重写是必须使用关键字override。

接口的实现是不需要关键字。

还有

抽象类的抽象方法,抽象属性在被子类再次继承时是可以再次重写。

接口则是无法再次重写。

代码:

 interface IHuman
{
string Name { get; set; } void Eat();
}
interface ILanguage
{
void Say();
}
class Iam : IHuman, ILanguage
{
string IHuman.Name { get; set; } void IHuman.Eat() => Console.WriteLine("吃"); void ILanguage.Say()
{ }
}
class IamSon : Iam//此处代码报错
{
override void Eat() => Console.WriteLine("吃吃吃");
}

如果在IamSon类的Eat()方法使用new关键字,也会警告,因为Eat方法并不需要隐藏基类。

这是为什么呢?

代码:

    interface IHuman
{
string Name { get; set; } void Eat();
}
interface ILanguage
{
void Say();
}
class Iam : IHuman, ILanguage
{
string IHuman.Name { get; set; } void IHuman.Eat() => Console.WriteLine("吃"); void ILanguage.Say()
{ }
}
class IamSon : Iam
{ }
class Program
{ static void Main(string[] args)
{
Iam iam = new Iam(); (iam as IHuman).Eat(); IamSon iamSon = new IamSon(); iamSon.Eat();//此处代码报错 (iamSon as Iam).Eat();//此处代码会报错 Console.ReadKey();
}
}

正常来说继承会延续下去,会继续遗传,但是显示接口的类的被继承之后,所显示的接口是无法延续下去。

换句说,接口的继承只具有一次性。

C# 接口(3)的更多相关文章

  1. App开发:模拟服务器数据接口 - MockApi

    为了方便app开发过程中,不受服务器接口的限制,便于客户端功能的快速测试,可以在客户端实现一个模拟服务器数据接口的MockApi模块.本篇文章就尝试为使用gradle的android项目设计实现Moc ...

  2. 干货来袭-整套完整安全的API接口解决方案

    在各种手机APP泛滥的现在,背后都有同样泛滥的API接口在支撑,其中鱼龙混杂,直接裸奔的WEB API大量存在,安全性令人堪优 在以前WEB API概念没有很普及的时候,都采用自已定义的接口和结构,对 ...

  3. 12306官方火车票Api接口

    2017,现在已进入春运期间,真的是一票难求,深有体会.各种购票抢票软件应运而生,也有购买加速包提高抢票几率,可以理解为变相的黄牛.对于技术人员,虽然写一个抢票软件还是比较难的,但是还是简单看看123 ...

  4. Java基础Map接口+Collections工具类

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  5. Java基础Map接口+Collections

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  6. java基础_集合List与Set接口

    List接口继承了Collection的方法  当然也有自己特有的方法向指定位置添加元素   add(索引,添加的元素); 移除指定索引的元素   remove(索引) 修改指定索引的元素   set ...

  7. 【WCF】自定义错误处理(IErrorHandler接口的用法)

    当被调用的服务操作发生异常时,可以直接把异常的原始内容传回给客户端.在WCF中,服务器传回客户端的异常,通常会使用 FaultException,该异常由这么几个东东组成: 1.Action:在服务调 ...

  8. PHP以接口方式实现多重继承(完全模拟)--学习笔记

     1.UML类图: 2.PHP代码: <?php /** * Created by PhpStorm. * User: andy * Date: 16-11-23 * Time: 下午7:57 ...

  9. 【微框架】Maven +SpringBoot 集成 阿里大鱼 短信接口详解与Demo

    Maven+springboot+阿里大于短信验证服务 纠结点:Maven库没有sdk,需要解决 Maven打包找不到相关类,需要解决 ps:最近好久没有写点东西了,项目太紧,今天来一篇 一.本文简介 ...

  10. 【接口开发】浅谈 SOAP Webserver 与 Restful Webserver 区别

    接口,强大,简单,交互,跨越平台 下面简单阐述这两大接口思想 一 REST: REST是一种架构风格,其核心是面向资源,REST专门针对网络应用设计和开发方式,以降低开发的复杂性,提高系统的可伸缩性. ...

随机推荐

  1. 微信小程序之工具js封装与使用

    工具库的创建与使用 创建一个common文件夹 在common文件夹中创建一个utils文件夹 在utils文件夹中创建util.js // 工具 function tool() { console. ...

  2. 微信JS-SDK实现自定义分享功能,分享给朋友,分享到朋友圈

    分享出去的内容,可以通过jssdk进行修改. 1.配置jssdk Wx_config.html <?php import("@.ORG.jssdk"); $jssdk = n ...

  3. Zabbix 客户端自定义端口监控

    http://www.linuxidc.com/Linux/2013-05/83780.htm 

  4. Spring Cloud与分布式系统

    本文不是讲解如何使用spring Cloud的教程,而是探讨Spring Cloud是什么,以及它诞生的背景和意义. 背景 2008年以后,国内互联网行业飞速发展,我们对软件系统的需求已经不再是过去” ...

  5. Linux - 文件合并

    >:左边命令的结果覆盖右边文件的内容 cat 命令,把文件的内容覆盖另一个文件中的内容 把两个文件的内容合并到一个文件中 echo 命令 whoami 命令 >>:把左边命令执行的结 ...

  6. spring-boot多环境配置文件

    spring-boot多环境配置文件 目录 配置 多环境配置文件名称要遵循格式 application-{profile}.yml application.yml spring: profiles: ...

  7. day8-心得

    1. Socket介绍 概念 A network socket is an endpoint of a connection across a computer network. Today, mos ...

  8. dyld_decache&MesaSQLite

    [dyld_decache] Starting from iPhone OS 3.1, the individual libraries files supplied by the system ar ...

  9. Hadoop之HDFS(一)HDFS入门及基本Shell命令操作

    1 . HDFS 基本概念 1.1  HDFS 介绍 HDFS 是 Hadoop Distribute File System 的简称,意为:Hadoop 分布式文件系统.是 Hadoop 核心组件之 ...

  10. day63-webservice 01.cxf介绍

    CXF功能就比较强了.CXF支持soap1.2.CXF和Spring整合的非常密切.它的配置文件基本就是Spring的配置文件了.CXF是要部署在服务器才能用的.CXF得放到Web容器里面去发布.CX ...