浅谈 接口

接口:

先看下面一段话:

       如果,你即将准备开始编程,就是那种 感觉需要很多很多类,而其中有些类,你已经提前知道需要哪些共同的功能。怎么办?当然首先想到,提前给他们规定好一种模式,规定他们是什么样的方法,有返回值,还是无返回值,返回啥种类型,等等的规定。

接口,就是可以帮助你的。接口,只是一种规范,一种约束。

 

概念:接口,是把方法都组合起来,以封装特定功能的集合。

注意:

    1.一旦类实现了接口,类就可以支持接口所指定的所有属性和成员。

   2.声明接口在语法上与声明抽象类完全相同,但是不允许接口中有任何成员的具体实现。所以,接口是不能实例化的。不能有构造方法和字段。

   3.不能有修饰符,如public,private,不能声明虚拟的,或者静态的。

   4.实现接口的类必须实现接口中所有的方法。(类似于抽象类中的抽象方法必须要全部实现)。

   5.一个类可以支持实现多个接口,多个类也可以支持相同接口。

   6.接口的命名,前面要加一个大写的"I".

 

用法:

   接口用interface声明,不能用class,接口名称前面要加,"I",接口中的属性或方法不能有修饰符,方法或方法体。

 

代码示例:      

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
  interface IPlay
    {
      //  int _id; 这种情况是错误的,因为接口中不能有字段
         int Num //这种情况是正确的,因为这是属性,属性的本质是两个方法组成(get,set)。
        {
            get; set;
        }
         void PlayGame();//只要定义,实现该接口的类必须要实现该方法
        void  PlayBasketball();
    }
 
    interface IEat
    {
        void EatFruit();
 
    }
    class Man:IPlay,IEat //一个类可以实现多个接口,并用逗号隔开,还可以继承类,但是只能一个,可以自己试试。
    {
        public int Num //属性也是要实现的,因为他就是方法嘛,字段的话就不可以。你可以试试。
        {
            get; set;//这边是简写了,不清楚属性的可以去查查属性是啥,再强调一遍,这就是两个方法
        }
       public void PlayGame()
        {
            Console.WriteLine("I can PlayGame");
        }
 
        public void PlayBasketball()
        {
            Console.WriteLine("I can Play BasketBall");
        }
 
        public void EatFruit()
        {
            Console.WriteLine("I Can Eat Fruit");
        }
    }
 
 
-------
  static void Main(string[] args)
        {
            Man m = new Man();
            m.EatFruit();
            m.Num = 2;
            m.PlayBasketball();
            m.PlayGame();
            Console.Read();
        }

  

posted @   不三周助  阅读(385)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?

喜欢请打赏

扫描二维码打赏

了解更多

点击右上角即可分享
微信分享提示