文档章节

C# 语法练习(15): 接口

涂孟超
 涂孟超
发布于 2014/09/26 15:35
字数 316
阅读 6
收藏 0
点赞 0
评论 0

接口只声明、无实现、不能实例化;
接口可包含方法、属性、事件、索引器, 但无字段;
接口成员都是隐式的 public, 不要使用访问修饰符;

类、结构和接口都可以继承多个接口;
继承接口的类必须实现接口成员, 除非是抽象类;
类实现的接口成员须是公共的、非静态的.

入门示例:
using System;

interface MyInterface
{
    int Sqr(int x);
}

class MyClass : MyInterface
{
    public int Sqr(int x) { return x * x; }
}


class Program
{
    static void Main()
    {
        MyClass obj = new MyClass();
        Console.WriteLine(obj.Sqr(3)); // 9

        MyInterface intf = new MyClass();
        Console.WriteLine(intf.Sqr(3));

        Console.ReadKey();
    }
}

 
 
 
 
 

 

 

  

一个接口得到不同的实现:
using System;

interface MyInterface
{
    int Method(int x, int y);
}

class MyClass1 : MyInterface
{
    public int Method(int x, int y) { return x + y; }
}

class MyClass2 : MyInterface
{
    public int Method(int x, int y) { return x - y; }
}


class Program
{
    static void Main()
    {
        MyInterface intf1 = new MyClass1();
        MyInterface intf2 = new MyClass2();

        Console.WriteLine(intf1.Method(3, 2)); // 5
        Console.WriteLine(intf2.Method(3, 2)); // 1

        Console.ReadKey();
    }
}

 
 
 
 
 

 

 

  

显示实现接口(接口名.方法):
using System;

interface MyInterface1
{
    void Method();
}

interface MyInterface2
{
    void Method();
}


class MyClass : MyInterface1, MyInterface2
{
    /* 显示实现接口不需要访问修饰符; 但显示实现的方法只能通过接口访问 */
    void MyInterface1.Method() { Console.WriteLine("MyInterface1_Method"); }
    void MyInterface2.Method() { Console.WriteLine("MyInterface2_Method"); }
}


class Program
{
    static void Main()
    {
        MyInterface1 intf1 = new MyClass();
        MyInterface2 intf2 = new MyClass();

        intf1.Method(); // MyInterface1_Method
        intf2.Method(); // MyInterface2_Method

        Console.ReadKey();
    }
}

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2009/01/03/1367621.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2004
码字总数 14107
作品 0
深圳
程序员
C#基础部分之语法和基础知识

C#的入口函数Main有以下形式 无入口参数、无返回值 1 public class HelloWorld 2 { 3 4 public static void Main() 5 { 6 System.Console.Write("Hello World/n"); 7 System.Console.Write(......

彭博 ⋅ 2012/03/09 ⋅ 0

【给初学者】Android学习路线

很多朋友都对学习路线问题感到迷茫,特别是还在上学的朋友们。在这里就详细的为大家介绍一下。 1.Java基础 很多朋友一上手就开始学习Android,似乎太着急了一些。Android应用程序开发是以Jav...

Jimmy Xie ⋅ 2012/09/08 ⋅ 1

求助,c#学习,或者说.net入门

[求助]本人有点php基础,现在需要切换到c#,看过语法之后,web开发还是很无力,怎么练习,快速上手,mvc看了,很多不明白(看过musicstore),求指导

sork ⋅ 2014/05/18 ⋅ 6

我,只关心接口

我们去饭店吃饭,坐下。然后叫:服务员! 好,服务员来了。 你会说:倒茶。或说:点菜。是吧。 你不会说:来,我们讨论一下什么是面向对象吧。 这是为什么呢?很简单,对你(顾客)而言,你并...

彭博 ⋅ 2012/03/09 ⋅ 0

工作流系统之二十五 .net工作流系统开发体会

.net工作流系统开发体会 公司的eworkflow自定义工作流系统,最初是开发了java版的。待java版的功能稳定后,就开始开发.net版的。 java版的eworkflow工作流系统,我们没有依赖于任何框架,如s...

长平狐 ⋅ 2012/10/11 ⋅ 0

.Net连接到SAP

刚开始接触SAP了,感觉很陌生,清一色的TCode,不过里面的功能确实强大,不得不佩服啊,之前我一直是搞WinForm和WebForm的,现在能够接触到SAP那我还是想多学习一下,看了一下ABAP的语法,觉...

allen_chen_0118 ⋅ 2012/05/22 ⋅ 0

TypeScript学习笔记

TypeScript是Javascript的超集,实现以面向对象编程的方式使用Javascript。当然最后代码还是编译为Javascript。 参考:http://www.typescriptlang.org/docs/handbook/basic-types.html 中文翻...

Jarhf ⋅ 2017/11/27 ⋅ 0

C#与C++的区别总结

从语法上看,C#吸收了VB,C++,Java等语言的优点,改进了不足,加入了大量实用特性。C#确实是优秀的语言,海神也让人敬仰(这大爷一把年纪还是以写代码为乐趣)。 本篇没有高级语法部分,只有...

老G ⋅ 2017/06/18 ⋅ 0

近期学习清单

框架 ========================= 1.编写xml性质的ioc容器demo(附上博文一篇) 2.编写unity形式的ioc容器demo(附上博文一篇) 3.编写自己的orm框架 c#语言特性 ==========================...

我只是一只小小鸟 ⋅ 2016/07/12 ⋅ 0

Razor:从aspx到cshtml常见错误及正确书写方法

从aspx转到chshtml还是有很多要适应的地方的,本帖是个人学习笔记帖不断更新。每天开着本帖编程。 按第一个有意义的编译错误的首字母排序,便于查找: Cannot implicitly convert type 'void...

wbf961127 ⋅ 2017/11/13 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从 Confluence 5.3 及其早期版本中恢复空间

如果你需要从 Confluence 5.3 及其早期版本中的导出文件恢复到晚于 Confluence 5.3 的 Confluence 中的话。你可以使用临时的 Confluence 空间安装,然后将这个 Confluence 安装实例升级到你现...

honeymose ⋅ 今天 ⋅ 0

Java8新增的DateTimeFormatter与SimpleDateFormat的区别

两者最大的区别是,Java8的DateTimeFormatter也是线程安全的,而SimpleDateFormat并不是线程安全。 在并发环境下使用SimpleDateFormat 为了能够在多线程环境下使用SimpleDateFormat,有这三种...

人觉非常君 ⋅ 今天 ⋅ 0

多线程如何控制执行顺序

线程的生命周期说明: 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态,在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、...

MarinJ_Shao ⋅ 今天 ⋅ 0

用ZBLOG2.3博客写读书笔记网站能创造今日头条的辉煌吗?

最近两年,著名的自媒体网站今日头条可以说是火得一塌糊涂,虽然从目前来看也遇到了一点瓶颈,毕竟发展到了一定的规模,继续增长就更加难了,但如今的今日头条规模和流量已经非常大了。 我们...

原创小博客 ⋅ 今天 ⋅ 0

MyBatis四大核心概念

本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。 MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:Sql...

waylau ⋅ 今天 ⋅ 0

以太坊java开发包web3j简介

web3j(org.web3j)是Java版本的以太坊JSON RPC接口协议封装实现,如果需要将你的Java应用或安卓应用接入以太坊,或者希望用java开发一个钱包应用,那么用web3j就对了。 web3j的功能相当完整...

汇智网教程 ⋅ 今天 ⋅ 0

2个线程交替打印100以内的数字

重点提示: 线程的本质上只是一个壳子,真正的逻辑其实在“竞态条件”中。 举个例子,比如本题中的打印,那么在竞态条件中,我只需要一个方法即可; 假如我的需求是2个线程,一个+1,一个-1,...

Germmy ⋅ 今天 ⋅ 0

Django第一期

安装Django 去https://www.djangoproject.com/download/ 下载最新版的Django,然后解压放到Anaconda\Lib\site-packages目录下,然后cmd进入此目录,输入安装命令: python setup.py install ...

大不了敲一辈子代码 ⋅ 今天 ⋅ 0

Springboot2 之 Spring Data Redis 实现消息队列——发布/订阅模式

一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式,这里利用redis消息“发布/订阅”来简单实现订阅者模式。 实现之前先过过 redis 发布订阅的一些基础概念和操...

Simonton ⋅ 今天 ⋅ 0

error:Could not find gradle

一.更新Android Studio后打开Project,报如下错误: Error: Could not find com.android.tools.build:gradle:2.2.1. Searched in the following locations: file:/D:/software/android/andro......

Yao--靠自己 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部