C#简单了解接口(Interface)使用方法

继承"基类"跟继承"接口"都能实现某些相同的功能,但有些接口能够完成的功能是只用基类无法实现的

1.接口用于描述一组类的公共方法/公共属性. 它不实现任何的方法或属性,只是告诉继承它的类 《至少》要实现哪些功能,继承它的类可以增加自己的方法.

2.使用接口可以使继承它的类: 命名统一/规范,易于维护.比如: 两个类 "狗"和"猫",如果它们都继承了接口"动物",其中动物里面有个方法Behavior(),那么狗和猫必须得实现Behavior()方法,并且都命名为Behavior这样就不会出现命名太杂乱的现象.如果命名不是Behavior(),接口会约束即不按接口约束命名编译不会通过.

3.提供永远的接口。 当类增加时,现有接口方法能够满足继承类中的大多数方法,没必要重新给新类设计一组方法,也节省了代码,提高了开发效率.

举个代码示例:

//公共接口: "动物"
public Interface IAnimal
{
   int EyeNumber;
   private void Behavior(); //行为方法,描述各种动物的特性
}
//类: 狗
public Dog : IAnimal
{
   string ActiveTime = "白天";
   private void Behavior()
   {
      Console.Write("我晚上睡觉,白天活动");
   }
}
//类: 猫
public Cat: IAnimal
{
   string ActiveTime = "夜晚";
    private void Behavior()
    {
         Console.Write("我白天睡觉,晚上活动");
    }
}
//简单的应用:
public static Main()
{
    Dog myDog = new Dog();
    myDog.Behavior(); //输出: "我晚上睡觉,白天活动"
    Cat myCat = new Cat();
    myCat.Behavior(); //输出: "我白天睡觉,晚上活动"
}

以上调用不同的类的相同名方法,会输出不同的东东,也就是说每个类里面的同名方法完成的功能可以是完全不同的.

更进一步,不是用上面Main方法这样一个一个调用类的方法,用多态性实现其调用.

看一下下面这个方法:

public Behavior(IAnimal myIanimal)
{
   myIanimal.Behavior();
}

其参数是<<接口类型>>,任何继承它的类都可以调用此方法,此方法能根据类的不同调用不同的类中的方法. 也即能够自己根据不同的类,完成不同的类的功能.

多态性代码示例:

Dog myDog = new Dog();

Cat myCat = new Cat();

Behavior(myDog); //Behavior接受“狗”类实例

Behavior(myCat); //Behavior接受“狗”类实例

这样Behavior方法写一次就能完成所有继承它的类中的相同名方法的不同功能. 非常方便,

同样,由于“动物软件”功能需求,需要再增加一个"龟"类:

//类: 龟
public Tortoise: IAnimal
{
    string ActiveTime = "很难说";
    private void Behavior()
    {
         Console.Write("我可以不活动,一睡就睡五千年!");
    }
}

那么也可以调用上面多态方法,所以说接口使方法具有较好扩展性.如果继承它的类很多的话,有多少好处是可想而知的!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C#中接口(interface)的理解

    .都是"虚的"不能被实例化,这也是接口中为什么不能包含字段--成员变量的原因. 2.正因为接口是虚的,所以接口内的索引,属性,时间等只能有声明,而不能在接口内实现,具体如何实现是派生接口或者派生类的事. 3.都具有模板的性质,如果一个接口或者类从某一个接口继承,它将自动具有被集成者的特征(包括索引,属性,函数,实践等). 4.接口支持多重继承,而C#中,类之支持单一继承,接口实际表示的是一种承载能力. 下面是接口的一个简单定义: 复制代码 代码如下: interface  SampIn

  • c# 接口interface基础入门小例子

    复制代码 代码如下: /// <summary>    /// interface    /// 与抽象类的区别:    /// 1,abstract可以有具体方法和抽象方法(必须有一个抽象方法),interface没有方法实现    /// 2,abstract可以有构造函数和析构函数,接口不行    /// 3,一个类可以实现多个interface,但只能继承一个abstract    /// 特点:    /// interface成员隐式具有public,所以不加修饰符    ///

  • C#中实现Fluent Interface的三种方法

    背景知识 Fluent Interface是一种通过连续的方法调用以完成特定逻辑处理的API实现方式,在代码中引入Fluent Interface不仅能够提高开发效率,而且在提高代码可读性上也有很大的帮助.从C# 3.0开始,随着扩展方法的引入,Fluent Interface也更多地被开发人员熟悉和使用.例如,当我们希望从一个整数列表中找出所有的偶数,并将这些偶数通过降序排列的方式添加到另一个列表中时,可以使用下面的代码: 复制代码 代码如下: i.Where(p => p % 2 == 0)

  • c#中的interface abstract与virtual介绍

    interface用来声明接口1.只提供一些方法规约,不提供方法主体.  如: 复制代码 代码如下: public interface IPerson{    void getName();//不包含方法主体} 2.方法不能用public abstract等修饰,无字段变量,无构造函数.3.方法可包含参数.  如 复制代码 代码如下: public interface IPerson  {    void getAge(string s);  } 一个例子(例1): 复制代码 代码如下: pub

  • C#接口interface用法实例

    本文实例讲述了C#接口interface用法.分享给大家供大家参考.具体如下: using System; //example of interfaces public class Animals { //simple interface interface IAnimal { void Breathes(); } //interfaces can inherent from other interfaces interface IMammal : IAnimal { int HairLengt

  • C# interface与delegate效能比较的深入解析

    前言以前在Code Complete 2nd(代码大全2)这本书上看过说在像是C#这种类型语言中能不要用delegate就尽量不要用,多使用interface取代,以避免效能上的影响实践出真理,所以我就写了个小范例来测试我的硬件是2.66G 4核心CPU,内存4G 我不知道是不是电脑比较快,以及我写的函数太小的关系次数到了10000000次才看到有影响 到了100000000次后看起来也是还好总而分析,还是会有影响需要高效运算或是在嵌入式中,应该还是要多注意一点代码 复制代码 代码如下: usi

  • C#接口(Interface)用法分析

    本文实例分析了C#接口(Interface)用法.分享给大家供大家参考.具体分析如下: 继承"基类"跟继承"接口"都能实现某些相同的功能,但有些接口能够完成的功能是只用基类无法实现的 1.接口用于描述一组类的公共方法/公共属性. 它不实现任何的方法或属性,只是告诉继承它的类至少要实现哪些功能,继承它的类可以增加自己的方法. 2.使用接口可以使继承它的类: 命名统一/规范,易于维护.比如: 两个类 "狗"和"猫",如果它们都继承

  • C#中接口(Interface)的深入详解

    定义 在 C# 语言中,类之间的继承关系仅支持单重继承,而接口是为了实现多重继承关系设计的.一个类能同时实现多个接口,还能在实现接口的同时再继承其他类,并且接口之间也可以继承.无论是表示类之间的继承还是类实现接口.接口之间的继承,都使用":"来表示. 接口定义了属性.方法和事件,这些都是接口的成员.接口只包含了成员的声明.成员的定义是派生类的责任.接口提供了派生类应遵循的标准结构.接口定义了语法合同 "是什么" 部分,派生类定义了语法合同 "怎么做&quo

  • C#简单了解接口(Interface)使用方法

    继承"基类"跟继承"接口"都能实现某些相同的功能,但有些接口能够完成的功能是只用基类无法实现的 1.接口用于描述一组类的公共方法/公共属性. 它不实现任何的方法或属性,只是告诉继承它的类 <至少>要实现哪些功能,继承它的类可以增加自己的方法. 2.使用接口可以使继承它的类: 命名统一/规范,易于维护.比如: 两个类 "狗"和"猫",如果它们都继承了接口"动物",其中动物里面有个方法Behavio

  • django开发post接口简单案例,获取参数值的方法

    项目环境:python3.6,django2.1 接口功能: 将传入参数a和b字符串相加,返回结果 1.新建一个django项目 # 新建一个名为Post的项目 django-admin startproject Post 2.在django-test/Post/Post 文件夹下 创建一个view.py文件 3.在view.py文件中写入代码 from django.http import HttpResponse import json # 定义功能 def add_args(a, b):

  • 深入解析Java接口(interface)的使用

    Java接口(interface)的概念及使用 在抽象类中,可以包含一个或多个抽象方法:但在接口(interface)中,所有的方法必须都是抽象的,不能有方法体,它比抽象类更加"抽象". 接口使用 interface 关键字来声明,可以看做是一种特殊的抽象类,可以指定一个类必须做什么,而不是规定它如何去做. 现实中也有很多接口的实例,比如说串口电脑硬盘,Serial ATA委员会指定了Serial ATA 2.0规范,这种规范就是接口.Serial ATA委员会不负责生产硬盘,只是指定

  • asp.net 简单工厂模式和工厂方法模式之论述

    简单工厂模式和工厂方法模式的区别 简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了于具体产品的依赖.而工厂方法模式定义了一个用于创建对象的借口,让子类决定实例化哪一个类,工厂方法是一个类的实例化延迟到其子类.其实多做一些联系不难发现:工厂方法模式实现时,客户端需要决定实例化那个工厂来实现运算类,选择判断的问题还是存在的,也即是说,工厂方法吧简单工厂的内部逻辑判断移到了客户端代码来进行,我想要加一些功能,本来是需要修改工厂类的,

  • Java中如何动态创建接口的实现方法

    有很多应用场景,用到了接口动态实现,下面举几个典型的应用: 1.mybatis / jpa 等orm框架,可以在接口上加注解进行开发,不需要编写实现类,运行时动态产生实现. 2.dubbo等分布式服务框架,消费者只需要引入接口就可以调用远程的实现,分析源代码,其实在消费端产生了接口的代理实现,再由代理调用远程接口. 3.spring aop 这是最典型的动态代理了. 创建接口的动态实现,有二种最常用的方式:JDK动态代理和CGLIB动态代理. 代理模式是一种常用的设计模式,其目的就是为其他对象提

  • Java8接口的默认方法

    Java8接口的默认方法 什么是默认方法,为什么要有默认方法? 简单说,就是接口可以有实现方法,而且不需要实现类去实现其方法.只需在方法名前面加个default关键字即可. 为什么要有这个特性?首先,之前的接口是个双刃剑,好处是面向抽象而不是面向具体编程,缺陷是,当需要修改接口时候,需要修改全部实现该接口的类,目前的 java 8之前的集合框架没有foreach方法,通常能想到的解决办法是在JDK里给相关的接口添加新的方法及实现.然而,对于已经发布的版本,是没法在给接口添加新方法的同时不影响已有

  • 解决Kotlin 类在实现多个接口,覆写多个接口中相同方法冲突的问题

    一.首先来看一个例子 package net.println.kotlin.chapter4 /** * @author:wangdong * @description:类实现接口的冲突问题 */ interface B{ fun x(): Int = 1 } interface C{ fun x(): Int = 0 } /**一个类实现了两个接口,两个接口中的方法相同,这个类在覆写的时候就会出现冲突*/ class D: B,C{ //当下面两个方法同时存在的时候,就会报方法相同的冲突 ov

  • TypeScript定义接口(interface)案例教程

    接口的作用: 接口,英文:interface,其作用可以简单的理解为:为我们的代码提供一种约定. 在Typescript中是这么描述的: TypeScript的核心原则之一是对值所具有的结构进行类型检查.它有时被称做"鸭式辨型法"或"结构性子类型化". 在TypeScript里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约. 举个例子: // 定义接口 Person interface Person { name: string; age: numb

  • 如何使用Python基于接口编程的方法实现

    目录 先通过一个实例来了解下接口到底解决什么问题. 定义一个接口 定义类,继承接口 Python 抽象基类的介绍 (PEP3119) 软件行业,唯一不变的就是变化.产品经理会变,产品需求会变,代码同样要跟着变. 不同的代码设计,变化所带来的工作量更是不同,有的每改一次需求,近乎一次重构,而有的只需要修改一个配置文件,或者在类里添加一行代码.当然比较好的代码设计,由于有着良好的可扩展性,高内聚,低耦合,因而易维护, 以少变应万变.如果才能有好的代码设计,就需要我们学习设计模式.今天为你分享的是在P

随机推荐