接口的理解

目录

接口

C# 语言参考

接口的特点

接口的进一步理解

关于接口的几个重点:


接口

接口interface的译名时,可以指:

  • 接口,用于沟通的中介物之抽象化。

C# 语言参考

定义:接口是一种约束形式,其中只包括成员定义,不包含成员实现的内容。

目的:接口的主要目的是为不相关的类提供通用的处理服务,由于C#中只允许树形结构中的单继承,即一个类只能继承一个父类,所以接口是让一个类具有两个以上基类的唯一方式。

接口只包含方法、属性、索引器和事件的签名。方法的实现是在实现接口的类中完成的。接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

接口的使用可以增加程序的可拓展性。

接口的特点

一个接口也能够拥有方法和属性,但在接口中声明的方法默认是抽象的。(即只有方法标识符,而没有方法体。)

1、接口被用来描述一种抽象

2、JAVA和C#不支持多继承类,接口可以弥补这个局限。

3、接口也被用来解耦(什么是解耦?)

在软件工程中,对象之间的耦合度就是对象之间的依赖性。对象之间的耦合越高,维护成本越高,因此对象的设计应使类和构件之间的耦合最小。

分类:有软硬件之间的耦合,还有软件各模块之间的耦合。耦合性是程序结构中各个模块之间相互关联的度量。它取决于各个模块之间的接口的复杂程度、调用模块的方式以及哪些信息通过接口。

解耦,字面意思就是解除耦合关系。在软件工程中,降低耦合度即可以理解为解耦,模块间有依赖关系必然存在耦合,理论上的绝对零耦合是做不到的,但可以通过一些现有的方法将耦合度降至最低。

接口的进一步理解

我们知道,如果某个设备需要向电脑中读取或者写入某些东西,这些设备一般都是采用USB方式与电脑连接的,我们发现,只要带有USB功能的设备就可以插入电脑中使用了,那么我们可以认为USB就是一种功能,这种功能能够做出很多的事情(实现很多的方法),其实USB就可以看做是一种标准,一种接口,只要实现了USB标准的设备我就认为你已经拥有了USB这种功能。(因为你实现了我USB标准中规定的方法)。

关于接口的几个重点:

1、我们不能直接实例化一个接口,因为接口中的方法都是抽象的,是没有方法体的;但是我们可以使用接口类型的引用指向一个实现了该接口的对象,并且调用这个接口的方法。(详细介绍见代码)

为什么有时需要使用接口实例化对象?(只有在某类继承了多个接口时存在区别)

详细见后文代码

 

Map这个类有IMap、IMapLayers、IActiveView等多个接口,IMap 声明的map只能从Map中得到IMap接口声明的属性和方法,而map1可以得到Map中所有的方法和属性。

 

 2、一个类可以实现不止一个接口。

3、一个接口可以继承于另一个接口,或者另一些接口,接口也可以继承,并且可以多继承。

4、一个类如果要实现某个接口的话,那么它必须要实现这个接口中的所有方法。

5、接口中所有的方法都是抽象的和public的,所有的属性都是public,static,final的。

6、接口用来弥补类无法实现多继承的局限。

7、接口也可以用来实现解耦。
 

using System;

namespace 接口
{
    //定义接口
    public interface IBark
    {
        void Bark();
    }
    public interface IEat
    {
        void Eat();
    }
    public class Dog : IBark  //继承接口IBark
    {
        public void Bark()
        {
            Console.WriteLine("汪汪汪!");//方法实现
        }
    }
    public class Cat : IBark, IEat
    {
        public void Bark()
        {
            Console.WriteLine("喵喵喵");
        }
        public void Eat()
        {
            Console.WriteLine("I love fish!");
        }
    }

    static class Program
    {
        static void Main()
        {
            IBark dog = new Dog();
            dog.Bark();
            Dog dog1=new Dog();
            //dog和dog1没有区别,因为只有一个接口

            //Cat存在两个接口
            IBark cat= new Cat();
            cat.Bark();
            cat.Eat();  //报错,IBark cat= new Cat();cat包含的只是Cat()中,IBark接口定义的属性和方法
            Cat big_cat = new Cat();//直接Cat big_cat = new Cat();  big_cat包含Cat里的所有方法与属性
            big_cat.Eat();
            big_cat.Bark();
        }
    }
}

参考博客

  C# 接口的作用浅谈举例_西瓜の春天的博客-CSDN博客_c#接口的作用 

JAVA基础——接口(全网最详细教程)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值