C# 接口类型

什么是接口

个人理解,接口有点像 C 语言的前置申明。I开头命名,默认为 public, 分号结束,没有实现体。继承它的类必须全部实现接口成员。

public interface IComparable
{
    int CompareT0(object obj);
}

实现接口

接口放在基类后面,类可以继承多个接口,用,号分开。

class Cat : Animal, ILiveBird
{
    string ILiveBird.BabyCalled()
    {
        return "Kitten";
    }
}

接口是引用类型

接口是引用类型。

接口类型转换建议用as运算符

as运算符的强制转换时,失败返回null,不会引发异常。

实现具有重复成员的接口

类内可以实现单个成员即可满足所有重复成员的接口。

派生类可以作为接口的实现

从基类派生过来的成员可以作为接口的实现成员。

显式接口成员

显式接口成员只能通过转化成接口引用类型才能实现访问,类实例不能够访问。

可以看之前的这篇笔记:https://www.cnblogs.com/huvjie/p/15341309.html

实现的显式接口成员前面不能加public等访问修饰符,因为类外根本不能够直接访问。但没有public也是可以被继承的。

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main()
        {
            Test test = new Test();
            ILiveBird liveBird = test as ILiveBird; // 需要强制转化
            if (liveBird != null)
                Console.WriteLine(liveBird.BabyCalled());
            else
                Console.WriteLine("null");
        }
    }

    interface ILiveBird
    {
        string BabyCalled();
    }
    class Animal { }

    class Cat : Animal, ILiveBird
    {
        string ILiveBird.BabyCalled()
        {
            return "Kitten";
        }
    }
    class Test:Cat
    {

    }
}

输出:

Kitten  // 需要强制转化成接口类型

▲ 不能加`public`等访问修饰符

接口可以继承接口

当然在类内都要被实现。

不同类实现一个接口

可以看之前的这篇笔记:https://www.cnblogs.com/huvjie/p/15341309.html




参考:

  1. 详细的内容可以看下《C# 图解教程》 P275 页。
posted @   double64  阅读(427)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示