C# 接口(3)
这么半天说了如何使用,实现接口。相信也都发现了接口和抽象类很多相似的地方。
但是!
这两个根本就是不一样的。
抽象类 : 接口:
可以实现代码【非抽象方法】 不可以实现任何代码
唯一继承 多次继承
继承会延续下去 继承只会存在与第一次继承
这个基本就是这两个最大的区别
那么 接口的实现和抽象类的重写是差不多的吗?
其实还是不一样的。
抽象类的重写是必须使用关键字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)的更多相关文章
- App开发:模拟服务器数据接口 - MockApi
为了方便app开发过程中,不受服务器接口的限制,便于客户端功能的快速测试,可以在客户端实现一个模拟服务器数据接口的MockApi模块.本篇文章就尝试为使用gradle的android项目设计实现Moc ...
- 干货来袭-整套完整安全的API接口解决方案
在各种手机APP泛滥的现在,背后都有同样泛滥的API接口在支撑,其中鱼龙混杂,直接裸奔的WEB API大量存在,安全性令人堪优 在以前WEB API概念没有很普及的时候,都采用自已定义的接口和结构,对 ...
- 12306官方火车票Api接口
2017,现在已进入春运期间,真的是一票难求,深有体会.各种购票抢票软件应运而生,也有购买加速包提高抢票几率,可以理解为变相的黄牛.对于技术人员,虽然写一个抢票软件还是比较难的,但是还是简单看看123 ...
- Java基础Map接口+Collections工具类
1.Map中我们主要讲两个接口 HashMap 与 LinkedHashMap (1)其中LinkedHashMap是有序的 怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...
- Java基础Map接口+Collections
1.Map中我们主要讲两个接口 HashMap 与 LinkedHashMap (1)其中LinkedHashMap是有序的 怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...
- java基础_集合List与Set接口
List接口继承了Collection的方法 当然也有自己特有的方法向指定位置添加元素 add(索引,添加的元素); 移除指定索引的元素 remove(索引) 修改指定索引的元素 set ...
- 【WCF】自定义错误处理(IErrorHandler接口的用法)
当被调用的服务操作发生异常时,可以直接把异常的原始内容传回给客户端.在WCF中,服务器传回客户端的异常,通常会使用 FaultException,该异常由这么几个东东组成: 1.Action:在服务调 ...
- PHP以接口方式实现多重继承(完全模拟)--学习笔记
1.UML类图: 2.PHP代码: <?php /** * Created by PhpStorm. * User: andy * Date: 16-11-23 * Time: 下午7:57 ...
- 【微框架】Maven +SpringBoot 集成 阿里大鱼 短信接口详解与Demo
Maven+springboot+阿里大于短信验证服务 纠结点:Maven库没有sdk,需要解决 Maven打包找不到相关类,需要解决 ps:最近好久没有写点东西了,项目太紧,今天来一篇 一.本文简介 ...
- 【接口开发】浅谈 SOAP Webserver 与 Restful Webserver 区别
接口,强大,简单,交互,跨越平台 下面简单阐述这两大接口思想 一 REST: REST是一种架构风格,其核心是面向资源,REST专门针对网络应用设计和开发方式,以降低开发的复杂性,提高系统的可伸缩性. ...
随机推荐
- 1050 String Subtraction
题意:给出两个字符串s1和s2,在s1中删去s2中含有的字符. 思路:注意,因为读入的字符串可能有空格,因此用C++的getline(cin,str).PAT系统迁移之后C语言中的gets()函数被禁 ...
- Xml xpath samples
Xml: <?xml version="1.0" encoding="utf-8" ?> <Orders xmlns="http:/ ...
- gcc及其选项详解
1.简介: gcc是gnu旗舰产品,目前基本上就是和unix捆绑在一起分发的.这个东西功能强大,但是有多达上千个选项,其用户手册也有将近一万行.虽然其中的多数选项平时很少用到.但是不管装软件还是写程序 ...
- Windows访问Linux下的共享目录的配置方法
user安全级别 第一步:安装samba3(如果已经安装就跳过这一步) [root@rhce2 /]# yum groupinstall "CIFS file server" 第 ...
- ocx控件针对网页刷新和关闭分别进行区分处理
当ocx加载在网页上时,如果对网页执行F5刷新事件,ocx控件会销毁ocx的窗口类,但是ocx的APP类是不会销毁的. 只有当网页被关闭时,才销毁app类. --------------------- ...
- HDU ACM Fibonacci
Problem Description Fibonacci numbers are well-known as follow: Now given an integer N, please find ...
- bash shell笔记3 结构化命令二
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://twentyfour.blog.51cto.com/945260/513601 三 ...
- 第一篇 UCOS介绍
第一篇 UCOS介绍 这个大家都知道.呵呵.考虑到咱们学习的完整性还是在这里唠叨一下.让大家再熟悉一下.高手们忍耐一下吧! uC/OS II(Micro Control Operation Syste ...
- Mesh Filter & Mesh Render
[Mesh Filter] The Mesh Filter takes a mesh from your assets and passes it to the Mesh Renderer for r ...
- 【总结整理】面试pm常见的问题---摘自《人人都是产品经理》
求职路上,“怼”来“怼”去的面试问题 人人都是产品经理社区 发布于 2018-10-29 19:53:06 举报 阅读数:1418 在求职路上,面对那些被“怼”到过的面试问题,应该如何处理? 一个 ...