C# 中关于接口实现、显示实现接口以及继承
先列出我写的代码:
接口以及抽象类、实现类
public interface IA
{
void H();
} public interface IB
{
void H();
} public abstract class D
{
public abstract void H();
} public class C : D,IA, IB
{ void IA.H()
{
Console.WriteLine("all a.h");
} public override void H()//T
{
Console.WriteLine("all b.h");
}
}
如果类C继承了抽象类D,那么在类C中可以使用override关键字,接口IB调用的也是被覆盖的方法H(T位置)【可以理解T位置的方法H同时覆盖了抽象类D中的方法H和实现了接口IB中的方法H】。
如果类C不继承抽象类D,那么类C中不能使用override关键字,override关键字只能在继承抽象类的情况下使用(个人使用之后感觉是这样的)。
一开始的代码是这样的:
public interface IA
{
void H();
} public interface IB
{
void H();
} public abstract class D
{
public abstract void H();
} public class C : D,IA, IB
{
public override void H()
{
Console.WriteLine("all h");
} void IA.H()
{
Console.WriteLine("all a.h");
} void IB.H()
{
Console.WriteLine("all b.h");
}
}
显示实现接口。显示实现接口时不能在覆盖的方法或字段上使用访问权限关键字【private、protected、public等】
在不继承抽象类D的情况下是这样的:
public class C : IA, IB
{
public void H()//U
{
Console.WriteLine("all h");
} void IA.H()
{
Console.WriteLine("all a.h");
} void IB.H()
{
Console.WriteLine("all b.h");
}
}
调用时,接口IA的对象只能访问IA.H(),接口IB只能访问IB.H(),访问不到U位置的方法。只能在实例化类C的情况下才能访问到U位置的方法H
调用的代码:
class Program
{
static void Main(string[] args)
{
IA a = new C();
IB b = new C();
a.H();
b.H();
D d = new C();
d.H(); C c = new C(); c.H();
Console.WriteLine("Hello World!");
Console.ReadLine();
}
}
以上就是我个人的小总结,如果有错,欢迎指正,个人的语文不好。欢迎批评。
C# 中关于接口实现、显示实现接口以及继承的更多相关文章
- 安全接口 interface --显示实现接口
前言:当我们定义接口的成员的时候不需要写访问控制符,因为它是默认public的,也只能是public.当一个类要实现这个接口的时候,自然要公开其成员.一直以来我都这么做. interface Inte ...
- C# 中显示实现接口
接口的实现分为显示实现和隐式实现 用显示实现接口的目的就是为了,当一个类中实现多个具有相同方法的接口时,能够区分开来 在调用的时候,必须用接口调用. class Program { static vo ...
- .net 反射访问私有变量和私有方法 如何创建C# Closure ? C# 批量生成随机密码,必须包含数字和字母,并用加密算法加密 C#中的foreach和yield 数组为什么可以使用linq查询 C#中的 具名参数 和 可选参数 显示实现接口 异步CTP(Async CTP)为什么那样工作? C#多线程基础,适合新手了解 C#加快Bitmap的访问速度 C#实现对图片文件的压
以下为本次实践代码: using System; using System.Collections.Generic; using System.ComponentModel; using System ...
- java中集合类中Collection接口中的List接口的常用方法熟悉
1:集合类,在java语言中的java.util包提供了一些集合类,这些集合类又被称作容器. 2:区别集合类和数组.(1)数组的长度是固定的,集合的长度是可变的.(2)数组是用来存放基本数据类型的,集 ...
- 报表开发工具中开放的部分图表js接口列表
1.. 描述 报表开发工具FineReport 8.0版本中开放了部分图表js接口,在具体应用的过程中很多人都不知道这些接口到底有什么作用,该怎么应用,所以根据我自己的应用在下面归纳了这些新开放js接 ...
- C# 使用隐式或显示实现接口的区别
通俗的来讲,"显示接口实现"就是使用接口名称作为方法名的前缀;而传统的实现方式称之为:"隐式接口实现".费话不说,例子如下: interface IA ...
- vue中Axios的封装和API接口的管理
前端小白的声明: 这篇文章为转载:主要是为了方便自己查阅学习.如果对原博主造成侵犯,我会立即删除. 转载地址:点击查看 如图,面对一团糟代码的你~~~真的想说,What F~U~C~K!!! 回归正题 ...
- 显示实现接口的好处c#比java好的地方
所谓Go语言式的接口,就是不用显示声明类型T实现了接口I,只要类型T的公开方法完全满足接口I的要求,就可以把类型T的对象用在需要接口I的地方.这种做法的学名叫做Structural Typing,有人 ...
- 008.在C#中,显式接口VS隐式接口
原文http://www.codeproject.com/Articles/1000374/Explicit-Interface-VS-Implicit-Interface-in-Csharp (At ...
随机推荐
- Natas Wargame Level 9 Writeup(bash injection)
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAArAAAAClCAYAAACkwM63AAAABHNCSVQICAgIfAhkiAAAIABJREFUeF
- 最优雅SSM框架:SpringMVC + Spring + MyBatis
在写代码之前我们先了解一下这三个框架分别是干什么的? 相信大以前也看过不少这些概念,我这就用大白话来讲,如果之前有了解过可以跳过这一大段,直接看代码! SpringMVC:它用于web层,相当于con ...
- 用java读写ini配置文件
本文转载地址: http://www.blogjava.net/silvernapoleon/archive/2006/08/07/62222.html import java.io.Bu ...
- Ubuntu安装中文输入法
如果你没有因为各种尝试搞乱了Ubuntu系统的话: 1. 在All Settings 里找到 Language Support, Install/Remove Languages里安装Chinese ...
- MySQL 主从复制与读写分离概念及架构分析 (转)
1.MySQL主从复制入门 首先,我们看一个图: 影响MySQL-A数据库的操作,在数据库执行后,都会写入本地的日志系统A中. 假设,实时的将变化了的日志系统中的数据库事件操作,在MYSQL-A的33 ...
- JS 浏览器cookie的设置,读取,删除
JavaScript是运行在客户端的脚本,因此一般是不能够设置Session的,因为Session是运行在服务器端的. 而cookie是运行在客户端的,所以可以用JS来设置cookie. 假设有这样一 ...
- 【面向对象设计原则】之依赖倒置原则(DIP)
依赖倒转原则(Dependency Inversion Principle, DIP):抽象不应该依赖于细节,细节应当依赖于抽象.换言之,要针对抽象(接口)编程,而不是针对实现细节编程. 开闭原则( ...
- Comparing the contribution of NBA draft picks(转)
When it comes to the NBA draft, experts tend to argue about a number of things: at which position wi ...
- python unittest 测试笔记(二):使用Requests
1. Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用.[Python Requests快速入门 :]http://cn.python-requests.org/z ...
- Java阶段性测试--知识点:数组,面向对象,集合、线程,IO流
#Java基础测试 涉及知识点:数组,面向对象,重载,重写,继承,集合,排序,线程,文件流 一.多项选择题(可能是单选,也可能是多选) 1.下列标识符命名不合法的是( D ). A.$_Name ...