文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:35
字数 316
阅读 6
收藏 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
博文 2011
码字总数 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
57
0
求助,c#学习,或者说.net入门

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

sork
2014/05/18
226
6
我,只关心接口

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

彭博
2012/03/09
46
0
工作流系统之二十五 .net工作流系统开发体会

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

长平狐
2012/10/11
218
0
.Net连接到SAP

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

allen_chen_0118
2012/05/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

web打印控件 LODOP的详细api

web打印控件 LODOP的详细api

wangxujun59
26分钟前
1
0
从一次小哥哥与小姐姐的转账开始, 浅谈分布式事务从理论到实践

分布式事务是个业界难题,在看分布式事务方案之前,先从单机数据库事务开始看起。 什么是事务 事务(Transaction)是数据库系统中一系列操作的一个逻辑单元,所有操作要么全部成功要么全部失...

中间件小哥
28分钟前
5
0
荣登Github日榜!微信最新开源MMKV

MMKV 开源当日即登Github Trending日榜,三日后荣登周榜。MMKV 在腾讯内部开源半年,得到公司内部团队的广泛应用和一致好评。 MMKV 是基于 mmap 内存映射的移动端通用 key-value 组件,底层序...

腾讯开源
37分钟前
2
0
前端取色工具:jcpicker

http://annystudio.com/software/colorpicker/#jcp-download

轻量级赤影
39分钟前
1
0
Swift - 将图片保存到相册

import Photos func loadImage(image:UIImage) { UIImageWriteToSavedPhotosAlbum(image, self, #selector(saveImage(image:didFinishSavingWithError:contextInfo:)), ni......

west_zll
46分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部